Paste a JSON plan from MySQL or MariaDB EXPLAIN FORMAT=JSON, or MariaDB ANALYZE FORMAT=JSON. The visualizer parses it in your browser and displays table-access nodes, plan paths, access methods, keys, estimated rows, and actual row/time metrics when the plan includes them. It recognizes MySQL’s JSON format v1 and common v2 table fields. You can paste the JSON value by itself or include the command-line EXPLAIN: label and surrounding table borders; the tool extracts the first JSON object. The plan is not uploaded, and the tool never connects to or executes queries against a database.
The EXPLAIN plan visualizer requires JavaScript to run in your browser. Please enable JavaScript to use this tool.
Visualize a MySQL or MariaDB JSON Plan
Paste the JSON value or the surrounding command-line output. The input stays in this browser; it is not sent to SQLiz or a database server.
Paste a MySQL or MariaDB JSON plan to begin.
Read the plan without running it
Use EXPLAIN FORMAT=JSON in MySQL or EXPLAIN FORMAT=JSON in MariaDB to get optimizer estimates. MariaDB ANALYZE FORMAT=JSON adds runtime statistics such as actual rows and loops, but MariaDB executes the statement to collect them. This page only parses the JSON you paste; it does not run any SQL. Review the statement before you obtain an ANALYZE plan, especially if it changes data.
The visualizer highlights full-table-scan access nodes and shows the estimated or actual row values present in the plan. Optimizer cost values are estimates, not elapsed time. A full scan is not automatically a problem: it may be appropriate for a small table or when a query reads a large share of its rows. Treat the display as a way to inspect the plan, not an automatic index recommendation.
In MariaDB ANALYZE FORMAT=JSON output, r_rows is the average rows read per node execution and r_loops is the number of executions. r_total_time_ms includes time spent in child nodes, so do not add together times from a parent and its nested children. See MariaDB’s ANALYZE FORMAT=JSON field descriptions.
MySQL 8.4 can be configured to emit JSON format v2, whose table nodes use fields such as index_name, estimated_rows, and estimated_total_cost; the visualizer reads those fields when present. Plan fields and estimates can vary by server version and optimizer settings. The optimizer’s cost model provides estimates, not elapsed time.
MySQL’s EXPLAIN ANALYZE returns tree output rather than the JSON format this tool accepts. See the official MySQL EXPLAIN reference and EXPLAIN output format, and MariaDB’s EXPLAIN reference and ANALYZE FORMAT=JSON reference.
For a MariaDB-focused explanation of the estimated and actual fields, read MariaDB EXPLAIN FORMAT=JSON and ANALYZE FORMAT=JSON.
Frequently asked questions
Does this tool connect to MySQL or MariaDB?
No. It only parses JSON text in your browser. It does not accept database credentials, send your plan to SQLiz, or execute the statement.
Can I paste traditional tabular EXPLAIN output?
This visualizer accepts JSON plans. Use EXPLAIN FORMAT=JSON in MySQL or MariaDB to produce the supported format.
Does a full table scan always mean I need an index?
No. The right access method depends on table size, selectivity, returned rows, and query shape. Check the whole plan and workload before changing indexes.