PGQViewer
alpha · tested on PostgreSQL 19 Beta 1

See your Postgres data as a living graph.

PGQViewer turns the native property graphs in PostgreSQL 19 into an interactive canvas. Connect, type a MATCH pattern, and explore — no extensions, no ETL, no separate graph database.

Free & open source · Apache-2.0 · self-hosted with Docker

social · graph modelayout: fcose
MATCH(a IS person)-[k IS knows]->(b IS person)
An interactive property graph: people (Alice, Bob, Carol, Dave) connected by “knows” edges, acting in movies (Dune, Arrival, Sicario) that belong to genres (Sci-Fi, Thriller), with a studio (Legendary) that produced them.
personmoviegenrestudio10 nodes · 14 edges · 2 ms

// why pgqviewer

Postgres 19 grew graphs. Now you can see them.

SQL/PGQ defines a property graph as metadata over tables you already have — no new database, no migration, no ETL. PGQViewer reads that graph straight from the catalog and draws it.

relational rows

people
1Alice
2Bob
3Carol
knows (src → dst)
1→2 · 2→3 · 1→3
GRAPH_TABLE

property graph

AliceBobCarolDune

// features

Built for exploring, not configuring.

PGQViewer does one thing well: show you the graph that's already in your database — accurately — and get out of your way.

two modes

Graph mode and SQL mode

Graph mode takes a MATCH pattern (with a WHERE pane when you need it) and projects every key and property for you. SQL mode runs verbatim PostgreSQL — joins, CTEs, EXPLAIN — into a sortable table.

GraphSQL
(a IS person)-[k IS knows]->(b IS person)WHERE a.born > 1985

exploration

Expand on click

Hover or double-click a vertex to pull in its 1-hop neighbours. New nodes lay out around the anchor and dedupe on stable ids — grow the graph without touching the query.

correctness

Honest about your catalog

PG19 accepts graph definitions that break identity — non-unique keys, edge REFERENCES that don't match the vertex key. PGQViewer catches them at connect time and tells you what to fix, instead of drawing a wrong graph.

socialready
people.id · non-unique KEY → fix

make it yours

Shape the view around your data

Per-label colours and captions, edge thickness mapped to a numeric property, property-based filtering, nine accent palettes, light & dark, focus mode. Every choice persists.

caption:name
light / dark

fourteen layouts

A layout for every shape

Force-directed for clusters, hierarchical for trees, concentric for hubs. Heavy layouts auto-downgrade on large results, so the canvas never freezes.

schema-aware

Browse the catalog

Every vertex and edge with its labels, typed properties, and approximate row counts. Click one to drop a ready-to-edit MATCH snippet into the editor.

person1,204
movie318
acted_in2,902

portable

Export anywhere

PNG and JPG from the canvas; GraphML, Cypher, and JSON from graph results; CSV from tables.

PNGJPGGraphMLCypherJSONCSV

// querying

Write a pattern. Read the SQL. See the graph.

There's no new query language to learn and nothing to install in your database. If you can write a line of SQL, you already know enough.

Graph mode
Describe what you're after with a MATCH pattern. PGQViewer projects every property and key, then draws the result on the canvas.
SQL mode
Drop into full PostgreSQL when you need it — GRAPH_TABLE, EXPLAIN ANALYZE, recursive CTEs, and parameters all work.
Always inspectable
See the generated SQL/PGQ at any time, cancel long queries live, and watch results stream onto the canvas as rows arrive.
editor · socialgraph mode

match pattern

(a IS person)-[k IS knows]->(b IS person)
compiles to
generated SQL/PGQ
SELECT *
FROM GRAPH_TABLE ("public"."social"
  MATCH (a IS person)-[k IS knows]->(b IS person)
  COLUMNS (
    a.id   AS a__pk__id,   a.name  AS a__p__name,
    a.born AS a__p__born,  k.src   AS k__sk__src,
    k.dst  AS k__dk__dst,  k.since AS k__p__since,
    b.id   AS b__pk__id,   b.name  AS b__p__name,
    b.born AS b__p__born
  )
) LIMIT 500;

// quick start

Up and running in a minute.

PGQViewer is a self-hosted web app — one Docker container serves the UI and the API. Clone it from GitHub, build the image, and point it at any PostgreSQL 19 database. You bring the database.

Terminal
git clone https://github.com/aoncodev/PGQViewer.git
cd PGQViewer
docker build -t pgqviewer .
docker run --rm -p 127.0.0.1:8080:8080 -v pgqviewer-data:/data pgqviewer
1

Connect

Point PGQViewer at your PostgreSQL 19 database and hit connect. Save it once, reconnect with a click.

2

Pick a graph

Choose a property graph from the sidebar — its labels and properties are right there, ready to explore.

3

Explore

Type a pattern, run it, and click around the canvas. Expand, drag, recolor, and export when you're done.

// open source

Open source, and better with you.

PGQViewer is Apache-2.0 and built in the open. Bug reports, fixes, and especially correctness checks against new PostgreSQL 19 betas are all welcome.

// get started

Start exploring your graphs.

Free and open source. Clone the repo, build the Docker image, and point it at your PostgreSQL 19 — you'll be exploring in a minute. No desktop install, no accounts.

Apache-2.0 · self-hosted with Docker · PostgreSQL 19 (Beta 1 or newer)