Skip to content
DeveloperTools

SQL Call Graph Viewer

Private

Explorer

Open a graph file to search its nodes.

Call tree

Open a call graph

Drop a .json file anywhere on the tool, paste it, or upload it. It is read in this tab and never uploaded.

Expected format

{
  "nodos": [
    { "id": "base.sp_name", "tipo": "SP" },
    { "id": "base.table", "tipo": "Tabla" }
  ],
  "enlaces": [
    { "origen": "base.sp_name", "destino": "base.table" }
  ]
}

About this tool

Load a JSON file with a "nodos" list and an "enlaces" list — every SP, table or channel, and every call from one to another — then search for a node and explore it. The tree view reads like a file explorer: each row opens into what that SP calls, in the order the code makes the calls, or flip the direction to see who calls it, all the way up to the channels. The graph view draws the same neighbourhood as boxes and arrows, callers on the left and callees on the right, as many levels deep as you choose.

Filters narrow a large system down to what matters: only SPs or only tables from some databases, a list of helpers to hide (an error logger called from thousands of places tells you nothing), and "only paths reaching", which keeps just the branches that end up in a given database or table. A call back into a procedure already on the branch is shown as a cycle and not followed, and the tree can be copied or downloaded as the same box-drawn text a script would print.

Click the star on any node to mark it in yellow, in both views. "Export with marks" writes the graph back out unchanged apart from a "marcado": true on the marked nodes, so opening that file later brings the marks back, and scripts that read the original format keep reading it.

Nothing you open is transmitted. The page is static HTML and the file is read, indexed and drawn in your tab, so the graph of a production system — tens of thousands of nodes — is safe to load.

Frequently asked questions

Is my graph uploaded to a server?

No. The file is read with the browser’s own file API and parsed in your tab; there is no backend endpoint to send it to. Your marks live in the page until you export them, and leaving the page with unexported marks asks you to confirm first.

What format does the file need?

An object with "nodos" — entries with an "id" such as base.sp_name and a "tipo" such as SP, Tabla or Canal — and "enlaces" — entries with an "origen" and a "destino", meaning the first calls or reads the second. English keys work too: nodes and links (or edges), with source and target. A link may name a node missing from the list; it is added with an unknown type, shown as [?].

How big a graph can it handle?

A 22 MB file with 29,000 nodes and 150,000 links loads in well under a second on a laptop. The tree renders children as you open them, 200 at a time, and the graph view draws up to 1,000 nodes around the one you picked, nearest levels first, so the size of the whole system never slows down what is on screen.

What does "only paths reaching" do?

It keeps only the branches that eventually arrive at the databases or nodes you type, and hides every branch that never gets there. With the direction set to "calls" that answers "which part of this process touches the billing database"; with "called by" it answers "through which callers does this SP get reached from a given channel". SPs from other databases are flagged with -X in the text tree.

How are the marks stored?

As "marcado": true on each marked node in the exported file ("marked" if the file used English keys). Everything else — key order, extra fields, the links — is written back as it was read. Importing that file restores the marks; removing a mark and exporting again removes the field.

Is it really free?

Yes, with no account and no usage limit. The site is funded by ads placed around the tool, never inside your working area.

Arrow keys to navigate, Enter to open, Esc to close