A lightweight, cross-platform database management tool for PostgreSQL, MySQL, and SQLite with a modern web-based interface.
RowSQL provides an intuitive web UI to manage your databases without the complexity of heavy desktop applications. Perfect for developers who need quick access to their data with powerful filtering, editing, and query tracking capabilities.
- Represent your sql data in a user-friendly UI.
- Perform various SQL operations – Easily insert, update, or delete records using intuitive web forms.
- Track query history – Maintain a "Recent Activity" log to see every change made to your database using RowSQL.
- Inspect Table Structures
- Shows rows the way you want them - you choose the order, filter
curl -fsSL https://raw.githubusercontent.com/biisal/rowsql/refs/heads/main/install | bash-
Create a .env file in your home directory's rowsql folder:
- Unix: ~/.rowsql/.env
- Windows: %USERPROFILE%\.rowsql\.env
-
.env file should contain the following
DBSTRING=my.db
PORT=8000
LOG_FILE_PATH="~/.rowsql/rowsql.log"
- run
rowsql - open http://127.0.0.1:8000 in your browser
DBSTRING is the connection string to your database.
- For SQLite, this is the path to your
.dbfile. - For PostgreSQL/MySQL, this is the PostgreSQL/MySQL connection string.
DBSTRING=postgres://admin:admin@127.0.0.1:5432/admin_db
- RowSQL automatically detects the database type from the connection string.
PORT
- The port number that RowSQL listens on. Using that port number, you can access RowSQL's web interface.
LOG_FILE_PATH
- The file path where RowSQL writes its Error logs.
- Go 1.25.3 or higher
- Node.js and pnpm (for building the frontend)
- Air (optional, for hot-reloading during development)
-
Clone the repository:
git clone https://github.com/biisal/rowsql.git cd rowsql -
Install frontend dependencies:
cd frontend && pnpm install && cd ..
-
Build the project:
make build
This will build the frontend and compile the Go binary to
bin/rowsql. -
Run the binary:
./bin/rowsql
For development with hot-reloading:
make devThis runs both the frontend dev server and backend with Air for automatic reloading.
Alternatively, run them separately:
- Frontend only:
make frontend-dev - Backend only:
make backend-dev
rowsql/
├── cmd/server/ # Application entry point
├── internal/ # Internal packages
│ ├── database/ # Database connection & type handling
│ ├── router/ # HTTP routes & handlers
│ ├── service/ # Business logic
│ └── logger/ # Logging utilities
├── frontend/ # React + Vite frontend
├── configs/ # Configuration management
└── resources/ # Static resources
- SQLite: Works well with databases up to several GB. Performance may degrade with very large tables (100M+ rows).
- PostgreSQL/MySQL: Suitable for databases of any size, but consider the following:
- Large result sets (>10,000 rows) are paginated automatically
- Complex queries on large tables may take time; use filters to narrow results
-
Index your tables: Ensure frequently queried columns have appropriate indexes for faster data retrieval.
-
Limit result sets: When working with large tables, use the built-in filtering and sorting features to limit the data loaded.
-
Connection pooling: RowSQL uses efficient connection pooling, but avoid running multiple instances against the same database unnecessarily.
-
Memory usage: RowSQL loads data on-demand. For very large result sets, pagination prevents excessive memory consumption.
-
Network latency: For remote databases (PostgreSQL/MySQL), ensure good network connectivity for optimal performance.
Contributions are welcome! Here's how you can help:
- Report bugs: Open an issue describing the bug and steps to reproduce it.
- Suggest features: Share your ideas for new features or improvements.
- Submit pull requests: Fork the repo, make your changes, and submit a PR.
Please ensure your code follows the existing style and includes appropriate tests where applicable.
This project is licensed under the MIT License. See the LICENSE file for details.

