base on Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows. # Beekeeper Studio (Community Edition)
Beekeeper Studio is a cross-platform SQL editor and database manager available for Linux, Mac, and Windows. Beekeeper Studio Community Edition is GPL licensed so it is free (libre) and free (gratis).
[Download the community edition here](https://beekeeperstudio.io/get-community)
We publish binaries for MacOS, Windows, and Linux.
![image](https://user-images.githubusercontent.com/279769/203650152-4a34af1f-8a38-47cf-a273-d34d1c84feeb.png)
š [Join the community Slack](https://launchpass.com/beekeeperstud-lvg5276)
## Supported Databases
<!-- SUPPORT_BEGIN -->
| Database | Support | Community | Ultimate | Beekeeper Links |
| :------------------------------------------------------- | :--------------------------- | :-------: | :------: | -----------------------------------------: |
| [PostgreSQL](https://postgresql.org) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/postgres-client) |
| [MySQL](https://www.mysql.com/) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/mysql-client)|
| [SQLite](https://sqlite.org) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/sqlite-client), [Docs](https://docs.beekeeperstudio.io/user_guide/connecting/sqlite) |
| [SQL Server](https://www.microsoft.com/en-us/sql-server) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/sql-server-client) |
| [Amazon Redshift](https://aws.amazon.com/redshift/) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/redshift-client) |
| [CockroachDB](https://www.cockroachlabs.com/) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/cockroachdb-client)|
| [MariaDB](https://mariadb.org/) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/mariadb-client) |
| [TiDB](https://pingcap.com/products/tidb/) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/tidb-client) |
| [Google BigQuery](https://cloud.google.com/bigquery) | ā Full Support | ā
| ā
| [Features](https://beekeeperstudio.io/db/google-big-query-client), [Docs](https://docs.beekeeperstudio.io/user_guide/connecting/bigquery) |
| [Oracle Database](https://www.oracle.com/database/) | ā Full Support | | ā
| [Features](https://beekeeperstudio.io/db/oracle-client), [Docs](https://docs.beekeeperstudio.io/user_guide/connecting/oracle) |
| [Cassandra](http://cassandra.apache.org/) | ā Full Support | | ā
| [Features](https://beekeeperstudio.io/db/cassandra-client) |
| [Firebird](https://firebirdsql.org/) | š
± Beta Support | | ā
| [Features](https://beekeeperstudio.io/db/firebird-client), [Docs](https://docs.beekeeperstudio.io/user_guide/connecting/firebird) |
| [LibSQL](https://libsql.org/) | š
± Beta Support | | ā
| [Features](https://beekeeperstudio.io/db/libsql-client) |
| [ClickHouse](https://clickhouse.tech/) | ā³ Coming Soon | | ā
| -- |
| [Snowflake](https://www.snowflake.com/) | ā³ Coming Soon | | ā
| -- |
| [Trino](https://trino.io/) / [Presto](https://prestodb.io/) | ā³ Coming Soon | | ā
| -- |
| [DuckDB](https://duckdb.org/) | ā³ Coming Soon | | ā
| -- |
| [MongoDB](https://www.mongodb.com/) | šļø Planned for V5 | | ā
| -- |
| [Redis](https://redis.io/) | šļø Planned for V5 | | ā
| -- |
| [DynamoDB](https://aws.amazon.com/dynamodb/) | šļø Planned for V5 | | ā
| -- |
<!-- SUPPORT_END -->
## Editions of Beekeeper Studio
1. **Beekeeper Studio Ultimate Edition** - The full version of Beekeeper Studio with all features. Buying Beekeeper Studio is also the best way to support the community edition. [Download link](https://beekeeperstudio.io/get)
2. **Beekeeper Studio Community Edition** - This repository. This is the open source version of Beekeeper Studio. It is a full featured database management client that is totally free and open source. [Download Link](https://beekeeperstudio.io/get-community)
š [Compare Beekeeper Studio Editions](https://beekeeperstudio.io/get)
## Beekeeper Studio Features
Top feature: It's smooth š«, fast š, and you'll actually enjoy using it š„°
- Truly cross-platform: Windows, MacOS, and Linux
- Autocomplete SQL query editor with syntax highlighting
- Tabbed interface, so you can multitask
- Sort and filter table data to find just what you need
- Sensible keyboard-shortcuts
- Save queries for later
- Query run-history, so you can find that one query you got working 3 days ago
- Default dark theme
Features exclusive to the full commercial edition ([available on our website](https://beekeeperstudio.io/get)):
- More themes
- Online storage for queries and connections with [Workspaces](https://www.beekeeperstudio.io/features/workspace)
- Easy data formatting with [Query magics](https://docs.beekeeperstudio.io/docs/query-magics)
- Multi-table export (v4+)
- Easy database backup using native tools (v4+)
- Easy database restore using native tools (coming soon)
- Oracle Database support
- Cassandra database support
One of our frustrations with other open-source SQL editors and database managers is that they take a 'kitchen sink' approach to features, adding so many features that the UI becomes cluttered and hard to navigate. We wanted a good looking, open source SQL workbench that's powerful, but also easy to use. We couldn't find one, so we created Beekeeper Studio!
## Supporting Beekeeper Studio
I love working on Beekeeper Studio, and I'd love to keep growing and improving it forever. To do that I need your help.
The best way to support Beekeeper Studio is to purchase the [Ultimate Edition](https://beekeeperstudio.io/get). Every purchase directly supports my work on Beekeeper Studio.
If you can't afford a license, please consider [becoming a project sponsor](https://github.com/sponsors/beekeeper-studio).
Thank you for your continued support!
## Documentation
Check out [docs.beekeeperstudio.io](https://docs.beekeeperstudio.io) for user guides, FAQs, troubleshooting tips, and more.
## License
Beekeeper Studio Community Edition (the code in this repository) is licensed under the GPLv3 license.
Beekeeper Studio Ultimate Edition contains extra features and is licensed under a [commercial end user agreement (EULA)](https://beekeeperstudio.io/legal/commercial-eula/).
Beekeeper Studio's trademarks (words marks and logos) are not open source. See our [trademark guidelines](https://beekeeperstudio.io/legal/trademark/) for more information.
## Trademark Guidelines
Trademarks can be complicated with open source projects, so we have adapted a set of standard guidelines for using our trademarks that are common to many open source projects.
If you are just using the Beekeeper Studio app, and you are not forking or distributing Beekeeper Studio code in any way, these probably don't apply to you.
š [Beekeeper Studio Trademark Guidelines](https://beekeeperstudio.io/legal/trademark/)
## Contributing to Beekeeper Studio
We love *any* community engagement. Even if you're complaining because you don't like something about the app!
### Contributor Agreements
- Building an inclusive and welcoming community is important to us, so please follow our [code of conduct](code_of_conduct.md) as you engage with the project.
- By contributing to the project you agree to the terms of our [contributor guidelines](CONTRIBUTING.md).
### Contribute without coding
We have you covered, read our [guide to contributing in 10 minutes without coding](https://github.com/beekeeper-studio/beekeeper-studio/issues/287).
### Compiling and Running Beekeeper Studio Locally
Want to write some code and improve Beekeeper Studio? Getting set-up is easy on Mac, Linux, or Windows.
```bash
# First: Install NodeJS 20, NPM, and Yarn
# ...
# 1. Fork the Beekeeper Studio Repo (click fork button at top right of this screen)
# 2. Check out your fork:
git clone
[email protected]:<your-username>/beekeeper-studio.git beekeeper-studio
cd beekeeper-studio/
yarn install # installs dependencies
# Now you can start the app:
yarn run electron:serve ## the app will now start
```
**If you get `error:03000086:digital envelope routines::initialization error`, you'll have to update openssl.**
- On Ubuntu/Debian:
```
sudo apt-get update
sudo apt-get upgrade openssl
```
- On CentOS/RHEL:
```
sudo yum update openssl
```
- On macOS (using Homebrew):
```
brew update
brew upgrade openssl
```
### Where to make changes?
This repo is now a monorepo, we have several places with code, but only really a couple of important entry points.
All app code lives in `apps/studio`, some shared code lives in `shared/src`. This is shared with other apps.
Beekeeper Studio has two entry points:
- `background.js` - this is the electron-side code that controls native things like showing windows.
- `main.js` - this is the entry point for the Vue.js app. You can follow the Vue component breadcrumbs from `App.vue` to find the screen you need.
**Generally we have two 'screens':**
- ConnectionInterface - connecting to a DB
- CoreInterface - interacting with a database
### How to submit a change?
- Push your changes to your repository and open a Pull Request from our github page (this page)
- Make sure to write some notes about what your change does! A gif is always welcome for visual changes.
## Maintainer notes (casual readers can ignore this stuff)
### Upgrading Electron Gotchas
This is always a total pain and will break the build 9/10.
Some things you need to consider when upgrading Electron:
1. Does it use a different node version. Eg Electron-18 uses node 14, 22 uses node 16. So everyone needs to upgrade
2. Does node-abi need to be upgraded to be able to understand the electron version? This is used in the build to fetch prebuilt packages. You need to upgrade this in root/package.json#resolutions
3. Were any APIs deprecated or removed? Make sure all features that interact with the Electron APIs still work, stuff like - selecting a file, maximizing a window, running a query, etc.
### Release Process
1. Up the version number in package.json
2. Replace `build/release-notes.md` with the latest release notes. Follow the format that is there.
- run `git log <last-tag>..HEAD --oneline | grep 'Merge pull'` to find PRs merged
2. Commit
3. Push to master
4. Create a tag `git tag v<version>`. It must start with a 'v'
5. `git push origin <tagname>`
- Now wait for the build/publish action to complete on Github
6. Push the new release live
- Go to the new 'draft' release on the releases tab of github, edit the notes, publish
- Log into snapcraft.io, drag the uploaded release into the 'stable' channel for each architecture.
This should also publish the latest docs
Post Release:
1. Copy release notes to a blog post, post on website
2. Tweet link
3. Share on LinkedIn
4. Send to mailing list on SendInBlue
## Big Thanks
Beekeeper Studio wouldn't exist without [Sqlectron-core](https://github.com/sqlectron/sqlectron-core), the core database libraries from the [Sqlectron project](https://github.com/sqlectron/sqlectron-gui). Beekeeper Studio started as an experimental fork of that repository. A big thanks to @maxcnunes and the rest of the Sqlectron community.
The original license from sqlectron-core is included here:
```
Copyright (c) 2015 The SQLECTRON Team
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```
", Assign "at most 3 tags" to the expected json: {"id":"12154","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"