If you like the way DrawSQL works but want it without a browser tab, a subscription, or a counter on how many tables you are allowed to draw, the alternative is a desktop ERD tool that opens a real connection to the database you are diagramming. That is what Schemity is: connect, reverse engineer, model, review the migration, and keep the file in Git.

DrawSQL is a genuinely nice product. It is developer-shaped rather than a general diagramming canvas, the editor is fast, and the public schema gallery is a good piece of community work. But three structural facts decide whether it fits your work, and none of them is a matter of taste: it has no live database connection at all, the size of the model you are allowed to build is a pricing tier, and the canvas will happily accept a diagram that no database could ever accept.

The Honest Summary

DrawSQL is a browser-based database diagram editor for developers and teams. Schema goes in by pasting SQL, diagrams live in DrawSQL’s cloud, and the collaboration layer - multiplayer editing with live cursors, canvas discussions, version history - is the reason to be there. It supports MySQL, PostgreSQL, SQL Server, and MariaDB, and it exports to SQL, JSON, Laravel migrations, and images.

A DrawSQL diagram of a StayBnB schema in the browser: tables grouped into colored regions labeled Listings, Users and Trust, and Bookings and Payments, two live collaborator cursors labeled Avy S and Gigi L, yellow sticky notes asking whether cancellation_policies should be a separate table or a JSON field, a left sidebar listing tables with the messages table expanded for inline column editing, and a zoom control reading 60%

That screenshot is DrawSQL at its best, and it is worth looking at before any criticism lands: table groups as colored regions, sticky notes carrying open design questions, and two teammates’ cursors moving on the canvas while you work. Those are real strengths and none of them is on the next screenshot.

Schemity is an offline ERD tool for software engineers: a native desktop app that connects to PostgreSQL, Supabase, MySQL, MariaDB, SQL Server, and SQLite, reverse engineers the live schema into a diagram, generates a SQL migration diff when you change the model, and writes every diagram as plain JSON into a folder you choose. One $129 purchase, no account, no seats, no table limit.

A Schemity ERD reverse-engineered from a live PostgreSQL database on macOS: entities grouped into named legends called policy, db_view and targeting, monospace field lists showing types and defaults such as TIMESTAMPTZ NOW() and BOOLEAN FALSE, red U badges for unique constraints and green N badges for nullable fields, database views rendered in italics with mview and view tokens in their footers, crow's foot relationships, small triangles in the top-right corner of the policy legend and of entities that carry a markdown description, a minimap in the corner, and a status bar reading Entities: 59, Relations: 71, Context view: Main, PostgreSQL: 17.5

Same job, different premise. Every type, default, unique constraint, and nullable flag in that diagram was read from a live database rather than typed in, the two italicised entities are database views the tool knows are read-only, and the footer reports the size of the model as information rather than as a quota. The small triangles in the top-right corner of the policy legend and of entities like pwd_rules and segments are the equivalent of those sticky notes, with one difference this post comes back to below: they are attached to the objects rather than to the canvas.

The difference is not cloud versus desktop. It is that one tool is fed by copy-paste and metered by plan, and the other is fed by a connection and bounded only by your disk.

Does DrawSQL Connect to Your Database?

No. The only documented way in is text. DrawSQL’s own feature list offers “Import from SQL” - you paste CREATE TABLE statements, or run its SQL-to-ERD tool - and there is no connection, no credential store, and no reverse-engineering step anywhere in the product. Nothing on the page tests, saves, or re-reads a database.

Read that as a workflow and the consequence is not the paste itself, which takes a minute. It is that the diagram is a photograph. The moment a migration lands, the picture and the database disagree, and the only repair is to dump the schema again, paste it again, and re-create the arrangement work you did the first time. This is exactly the loop that makes people stop updating diagrams: keeping the ERD current becomes a second job with no payoff between updates.

Schemity starts from the other end. You create a connection - directly or through an SSH tunnel - test it before saving, and Schemity reverse engineers the schema into an ERD: tables, fields, types, defaults, check constraints, unique constraints, and the foreign keys as real crow’s foot relationships with their ON DELETE and ON UPDATE behavior attached. Passwords go to the operating system keychain, never a config file, and SSH connections store a reference to your private key rather than its contents.

None of which means a database is required. When you create a connection in Schemity, Conn method has a None option: no host, no credentials, no database - you pick a dialect (PostgreSQL, MySQL, SQLite, or SQL Server) and design on an empty canvas. The dialect is not decoration; it decides which types you can choose from and what the generated SQL looks like, so a schema designed against SQL Server is a SQL Server schema rather than a generic drawing you translate later. Greenfield design, an interview whiteboard, a schema for a database that does not exist yet - all of it works with nothing to connect to, and starting an empty offline diagram this way is free; the license unlocks the live-database half.

So the difference is not that Schemity demands a connection and DrawSQL forbids one. It is that Schemity treats the connection as available and DrawSQL has no concept of one - which decides what happens on day 200, not day one.

Because the connection persists, so does the diagram’s accuracy. Re-opening it pulls the current schema: entities you have already positioned keep their layout, dropped tables and columns disappear, and new tables arrive as dashed drafts ready to place - visible in orange on the minimap so you can see exactly where the drift landed. The pasted-dump workflow is still available when you want it, since importing a SQL dump or a set of CREATE TABLE statements produces the same entities and relationships, and DBML import brings schemas over from dbdiagram.io. It is just not the only door.

Can You Draw a Schema DrawSQL Cannot Export?

Yes, and it takes about three gestures. We spent an afternoon in the DrawSQL editor on 4 August 2026 building an ordinary tasks-and-comments schema, and the canvas accepted three things that no relational database would.

A foreign key between two arbitrary columns. Drag from users.name to tenants.name - two plain varchar columns, neither of them a key - and DrawSQL draws the relationship without a murmur.

A DrawSQL canvas showing a users table and a tenants table joined by a dashed relationship line from users.name to tenants.name, both varchar columns; the selected relationship's popover reads users name to tenants name and offers cardinality buttons 1:1, 1:N and N:1 with 1:N highlighted, plus a delete icon

In PostgreSQL, MySQL, and SQL Server alike, a foreign key must reference a primary key or a unique constraint, and tenants.name is neither. So the line reads as a foreign key, is labelled 1:N like a foreign key, and describes a constraint the database would reject outright. The same held for every pair we tried, including comments.body pointing at members.role. Nothing about the shape of the line tells you it is fiction.

A relationship that is a label, not a constraint. The popover in that screenshot is the whole of what a DrawSQL relationship offers: the two endpoints, three cardinality buttons, and a delete icon. There is no ON DELETE or ON UPDATE referential action, no constraint name, and no control over how the connector is routed - the only lever on where a line goes is dragging the tables at either end and hoping. Cardinality here is a label you pick rather than something derived from the schema: 1:N is selected because you clicked 1:N, not because tenants.name is non-unique. DrawSQL’s own documentation index matches that thinness - articles for Tables, Columns, Indexes, Table groups, and Sticky notes, and not one for relationships.

Count those three buttons again, because the set is odd in both directions. 1:N and N:1 are the same relationship read from opposite ends, so one of the three is a duplicate of another - and the missing fourth is N:N, the only cardinality that actually needs help from a tool, because it is the one a relational database cannot store without a junction table.

Two tables with the same name. Copy an entity, paste it, and the copy lands as a peer rather than as users_copy or a name collision warning.

A DrawSQL canvas showing two identical tables both named users, each with id bigint, email varchar and name varchar, stacked one above the other, and each drawing its own relationship line into the name column of a third table called tenants

Two tables called users, each with its own id, email, and name, and each running its own relationship into tenants.name. CREATE TABLE users twice in one schema is invalid in every engine DrawSQL supports, so the diagram now describes something that cannot be built - and it describes it twice, with two conflicting foreign keys into the same non-key column. The canvas raises nothing, because nothing on the canvas is checking.

These are the same fact wearing three costumes, and it connects directly to the section above: a tool that never opens a connection never has to produce a schema a database would accept, so nothing in it is under pressure to enforce the rules. To be fair, DrawSQL is partly a sketching tool with a public gallery attached, and permissiveness in a sketch pad is a defensible design choice - you should be able to draw a half-formed idea. But “SQL” is in the name and DDL export is a listed feature, which sets a different expectation: that what you draw is a schema, not a picture that resembles one. We could not test what the export actually emits for that name to name line, because export is gated behind a paid plan; the observation is what the editor accepts.

Schemity treats a relationship as an object with rules, which removes all three cases by construction. You do not connect two arbitrary fields - you drag between two entities and Schemity creates the foreign key field on the child pointing at the parent’s primary key, so name to name is not expressible in the first place. Every relationship then opens: cardinality is derived rather than chosen, following the foreign key’s uniqueness, which is why a 1:1 does not silently import as a 1:N; a CASCADE set in that dialog is then drawn with a bold crow’s foot, so its blast radius is visible on the canvas without opening anything. Clicking a relationship highlights the whole line together with both fields it connects, and dragging it adds a waypoint so you never have to guess which line goes where. Duplicate entity names are rejected rather than drawn.

Put the two dialogs side by side and the difference is legible in a glance.

Schemity's Relation dialog open over an ERD: the relationship is shown as a fixed pwd_rules.id to pwd_policies. prefix followed by an editable foreign key field name pwd_rule_id, dropdowns for On delete and On update both set to NO ACTION, a cardinality selector offering 1:N, 1:1 and N:N with 1:N selected, and Cancel and Save buttons

Note what is editable and what is not. The left side reads pwd_rules.id→pwd_policies. and cannot be changed - the parent’s primary key and the child table are settled by the drag that created the relationship. The one text field is the name of the foreign key column on the child, pwd_rule_id, because that is the only part of a foreign key that is genuinely a naming decision. Below it sit the two dropdowns DrawSQL has no equivalent for - On delete and On update, defaulting to NO ACTION - which decide how far a DELETE travels through the schema and are otherwise invisible in most diagrams.

The cardinality menu differs the same way. Schemity offers 1:1, 1:N, and N:N, and there is no N:1 on purpose: direction is carried by the gesture, so you drag from the parent to the child and the foreign key field is created on the child. That is not a shortcut, it is where the answer already lives - in a real schema the direction of a relationship is not a preference, it is a fact about which table holds the foreign key column. Offering 1:N and N:1 as separate settings splits one fact into two representations and leaves room for them to disagree; drag the other way in Schemity and you get the other relationship, because you have built a different schema. Meanwhile the N:N that DrawSQL’s popover has no button for is the one Schemity builds the junction table for - both foreign keys and a composite primary key already in place - rather than leaving you to assemble it by hand in six steps.

And when the diagram is connected to a database, the migration diff is the final check - the model has to be something the engine will actually accept before it becomes real.

What Does DrawSQL Cost in 2026?

Verified from DrawSQL’s pricing page on 4 August 2026, at the default monthly billing:

PlanPricePrivate diagramsTables per diagramUsers
Free$0None - all diagrams public151
Starter$19/mo or $171/yr10501
Growth$59/mo or $531/yrUnlimited1005
Large$179/mo or $1,790/yrUnlimitedUnlimited25
EnterpriseCustomUnlimitedUnlimitedUnlimited

Two numbers in that table do the most work. The first is 15 - the free tier’s table cap, which arrives long before a real schema does. The second is $179 per month, the price at which the cap disappears entirely. Between them, the plan you are on decides how much of your database you are permitted to model, which is a strange thing to negotiate with a drawing tool. Modeling under a quota bends the model: you merge entities you would have split and skip the junction table you actually needed, and the diagram quietly stops being an honest description of the system.

Look back at the Schemity status bar in the screenshot above: Entities: 59, Relations: 71. That is an unremarkable application schema - not a warehouse, not an enterprise ERP - and it is already nearly four free tiers’ worth of tables, nine past the Starter cap, and squarely in $59-per-month Growth territory. The status bar reports it the way a text editor reports a line count, next to the PostgreSQL version, because the number is information rather than a threshold.

Schemity is $129 once, for unlimited workspaces, unlimited diagrams, unlimited entities, and unlimited context views. That is less than one year of the cheapest paid DrawSQL plan at its annual rate, and about 2.2 months of Growth. There is no per-seat multiplier, because there are no seats - the files are on your disk and your teammates read them out of the repository.

AI is priced differently too. DrawSQL includes 500 AI credits per month on Starter and Growth, so the assistant is a metered feature of the subscription. Schemity’s built-in chatbot is bring-your-own-key: you point it at OpenAI, Claude, Gemini, Grok, or DeepSeek with your own key and pay that provider directly, or you add Ollama and run a local model with no cloud in the loop at all. Either way the credits are not ours to sell you.

What Happens to Your Schema on the Free Tier?

It becomes a public URL. DrawSQL’s free plan is unlimited public diagrams - privacy is what the $19/month Starter plan buys. That is a legitimate business model, and for the open-source schemas in DrawSQL’s gallery it is the whole point. It is also a hard stop for a large class of professional work.

If you consult, the schema on your canvas belongs to a client and is very likely covered by an NDA. If you work somewhere with an IT policy, “the ERD is on a public web page” is not a sentence that survives review. The free tier is therefore not a free tier for you - it is a paywall with a publication clause, and the first real decision you make in the tool is which client’s data model you are willing to publish. That is the same problem as keeping every client’s schema in one shared cloud account, with the sharing default turned all the way up.

An offline ERD tool inverts the question, and it inverts it for free diagrams too - designing with Conn method None costs nothing and still writes to your disk rather than to a URL. A Schemity workspace is a folder of JSON files on your machine; a diagram is not published, shared, or hosted unless you put it somewhere yourself. Per-client isolation is physical - one folder per engagement - and handover at the end of a contract is a folder copy rather than a permissions audit. Nothing needs to be public for you to have the free use of your own model.

Where Does the Diagram Live?

In DrawSQL, a diagram is a record in DrawSQL’s database, reachable through DrawSQL’s interface, for as long as your subscription is current. Exports exist, but on Starter the export is JSON only - so the cheapest paid plan is also the one where getting your work back out is most constrained. When your model lives inside a vendor’s storage, switching tools later means re-doing the modeling, and the diagram itself is something that can go missing without you deleting anything.

In Schemity, a diagram is a file. Creating a workspace creates a matching folder, every diagram inside it is plain, readable JSON, and you open that folder in Finder or Explorer with one shortcut. Put the folder in a repository and the schema gets the same treatment as the code: the ERD is reviewed in a pull request as a diff, blamed, branched, and reverted with the tools you already use. Workspaces that sit inside a Git repository even show a branch icon in the workspace list, so which diagrams are actually under version control is visible rather than assumed.

That distinction is worth testing against the unhappy case, because a tool’s real character shows when you stop paying it. When Schemity’s two-week trial expires, context views and the Context Map are locked - the pricing page says so, and Schemity Lite does not include them either. What does not happen is your work becoming unreachable. The context views you already built are still in the workspace JSON on your disk, still in your Git history, still readable in any text editor, and still there the moment a license unlocks the panel again. Expiry withdraws a feature from the application; it does not withdraw the file from you. That is a different kind of event from a lapsed subscription in a cloud tool, where what ends is access to the diagram itself.

Export is not a rescue operation either. A diagram or a single context view goes out as JPG, PNG, or SVG; the SQL of the main view, any context view, or one entity is a right-click away; and the whole schema exports as DBML or as a Mermaid erDiagram that GitHub, GitLab, Notion, and Obsidian render natively from text.

DrawSQL vs Schemity

DrawSQLSchemity
What it isCloud database diagram editor for teamsFocused offline ERD tool for relational schemas
PlatformBrowser, account requiredNative desktop app (macOS, Windows, Linux)
Getting schema inPaste CREATE TABLE statementsLive connection or SSH tunnel; SQL dump and DBML import too
Designing with no databaseThe only mode there isConn method None, with a chosen dialect driving types and SQL
DatabasesMySQL, PostgreSQL, SQL Server, MariaDBPostgreSQL, Supabase, MySQL, MariaDB, SQL Server, SQLite
Keeping it currentRe-paste the schemaRe-sync on open; layout preserved, drift applied
RelationshipsEndpoints, three cardinality buttons, deleteCardinality derived from uniqueness, ON DELETE/ON UPDATE, waypoints, click-to-highlight
Cardinalities offered1:1, 1:N, N:1 - no N:N1:1, 1:N, N:N - direction comes from the drag, so no N:1
Many-to-manyBuild the junction table yourselfJunction table generated with both FKs and a composite primary key
What the canvas allowsForeign keys between arbitrary columns; duplicate table namesForeign keys target the primary key; duplicate entity names rejected
Notes on the diagramSticky notes, anchored to a canvas positionMarkdown descriptions, anchored to an entity, legend, or context view
Applying changesExport SQL and run it yourselfReviewed migration SQL diff, applied only on your approval
Table limit15 free, 50 Starter, 100 Growth, unlimited at $179/moNone
Privacy of a free diagramPublic, by designPrivate - free offline design still writes to your disk, not a server
Where diagrams liveRecords in DrawSQL’s cloudPlain JSON files in a folder you choose
Version historyBuilt in, on paid plansGit, on files you own
AI500 credits/month on paid plansBYOK (OpenAI, Claude, Gemini, Grok, DeepSeek) or local Ollama
CollaborationReal-time multiplayer, canvas discussionsSingle-designer by design; review happens in Git
Pricing$19 to $179/month, per plan and per seat$129 one-time, unlimited diagrams

Modeling a Schema That Does Not Fit in One Diagram

The table cap and the wall-poster problem are the same problem seen from two ends. A 200-table database will not fit on any tier below $179 per month, and even when it fits, one canvas holding 200 tables is not something anyone reads.

Schemity’s answer is not a bigger canvas but more perspectives on one model. Legends group related entities into named, colored regions on the main view. Context views then carve the schema into focused sub-diagrams - a context view is a focused subset of the main diagram that you arrange freely while the schema itself stays untouched, so the main view remains the single source of truth. Right-click a legend and every entity inside it becomes a context view in one step. An entity with a relationship to something outside the view is marked with an orange dot, so a focused view still tells you what it is hiding.

Above those, the Context Map renders each context view as a single node and draws arrows for the foreign keys flowing between them, with a count on every arrow and a curved arrow wherever two contexts depend on each other. Fifteen readable diagrams and one architecture map beat a single sheet nobody opens - and the reason you do not need a diagram of all 800 tables is that comprehension never scaled with the canvas.

Where Should a Note About a Table Live?

Attached to the table, is Schemity’s answer - which is why it has entity, legend, and context view descriptions but deliberately no sticky notes.

The difference is what the note is anchored to. A sticky note is anchored to a coordinate on the canvas: it sits at x, y, and the canvas is the only thing that knows it exists. A description is anchored to an object. Give pwd_rules a description and a triangle appears in its top-right corner; clicking it opens the rendered markdown. Legends carry them too, so the note can describe a whole domain rather than one table, and so can a context view.

That distinction is not aesthetic, because the two behave differently as the schema moves underneath them:

Sticky note on the canvasDescription on the object
You move the tableNote stays where it wasTravels with the table
The table is dropped and you re-syncNote survives, pointing at nothingRemoved with the table
The table is imported into a context viewDoes not come alongComes with it
Someone reads the diffA note moved, somewhereThe note changed on the entity it describes

Six months on, an orphaned note floating near where a table used to be is worse than no note, because it reads as documentation and it is actually a fossil. A description cannot outlive its subject: it is a property of the entity, stored in the entity’s JSON, so the meaning of the schema and the schema itself move as one thing - which is the entire point of putting the data dictionary inside the diagram rather than in a wiki beside it.

The honest cost is the case DrawSQL’s own screenshot demonstrates. That sticky note asks whether cancellation_policies should be a separate table or a JSON column on listings - a question about a table that does not exist yet, and therefore has nothing to attach a description to. Anchoring to objects means you cannot pin a thought to a decision you have not made. Schemity’s partial answer is the legend: draw one around the area under discussion and its description holds the open question for that domain. The full answer is that an unresolved design question is not documentation, and probably belongs in the pull request or the ticket where it will be resolved and closed - which is the same reasoning behind Schemity having no zoom. Some absences are decisions.

If your team thinks out loud on the canvas, that is a real reason to prefer DrawSQL, and no amount of philosophy changes it.

Where DrawSQL Wins

The concessions are real, and for some teams they settle it.

Real-time multiplayer editing. Live cursors, simultaneous edits, and discussion threads pinned to the canvas. Schemity does not do this and does not plan to - it takes a deliberate single-designer position where one person holds the pen and feedback arrives through review. If your modeling sessions are three people on one canvas, DrawSQL is built for that and Schemity is not.

Sticky notes on the canvas. As the section above argues, Schemity’s descriptions are the more durable form - but durability is not what a half-formed thought needs. If your team parks open questions on the diagram as you go, DrawSQL supports that directly and Schemity asks you to put them somewhere else.

A link, not an install. Anyone with the URL can open the diagram - no download, no license, no operating system to match. Schemity’s read-only mode lets someone explore a diagram without database access, but it is still an app they have to install.

Laravel migration export. Exporting the model straight to Laravel migrations is a genuinely useful piece of framework integration that Schemity has no equivalent for; Schemity emits SQL DDL and a migration diff instead.

A free way in. Fifteen tables and a public URL is a real starting point if the schema is not confidential - and for the open-source schemas in DrawSQL’s gallery, publishing is the feature. Schemity’s free paths are a two-week full trial on the desktop app, offline design with Conn method None after it, and Schemity Lite in the browser for designing and sharing by link. But they are genuinely narrower: the live-database half this post spends most of its time on is licensed, and so are context views and the Context Map. There is no permanent free tier that includes them.

What Is a Good DrawSQL Alternative That Works Offline?

If what you valued in DrawSQL was the shared canvas - people editing together, discussions on the diagram - then no offline tool will replace it, and you should keep using it for that.

If what you valued was the ERD itself, the useful alternative is a tool whose primitives are tables, foreign keys, and migrations, and whose storage is a file. Schemity is that in desktop form: it connects to the database and reads the constraints instead of waiting for a paste, it re-syncs on open so the diagram stays true without a maintenance ritual, it generates a migration SQL diff you approve before anything runs, and it keeps every diagram as a JSON file that Git can version alongside the code it describes.

And the arithmetic is not close. A subscription is a permanent line item that also decides how large your model may be; a $129 one-time purchase ERD tool with unlimited local workspaces has neither property.

Who Should Use DrawSQL

  • Diagramming is a live team activity and multiplayer editing is the point
  • Sharing means sending a URL to people who will not install anything
  • Your schemas are open source, or public visibility is genuinely fine
  • Laravel migration export fits your stack directly

Who Should Use Schemity

  • You are diagramming a database that exists and want the tool to read it directly
  • Or the database does not exist yet, and you want to design it against a real dialect before it does
  • The schema is under NDA, an IT policy, or simply none of the internet’s business
  • The ERD should live in Git, be reviewed in pull requests, and outlive any vendor
  • Your model is bigger than a free tier and you refuse to negotiate its size
  • One purchase, no seats, no meter

The Bottom Line

DrawSQL is a well-made cloud ERD editor, and both of its limits follow from that description rather than from any lack of craft: a browser app with no connection to your database has to be fed by hand, and a subscription product has to meter something, so it meters tables.

If your diagram is a conversation, that trade is fine. If your diagram is a picture of a database you have to keep accurate for years, the fix is an offline desktop ERD tool that opens the connection, reads the constraints, preserves your layout on every re-sync, and writes the result to a file you own.

Comparing the other database-native tools instead?