Performance

Release 0.5.0 verification · 19 October

Apple M1 · 8 GiB · macOS 27.0.1

Same inputs, one document per fresh process, built-in renderers. Cold clears identified application caches; the OS file cache remains. Warm follows a completed cold traversal. Times come from compositor frames and process birth, before input. Each cell is one observation, not a statistical ranking. Default window sizes differ between apps.

Cold start

ApplicationSize · MiBLightFirst MermaidRAM · MiB
MDVu6.961.31 s1.20 s146.2
Typora44.532.19 s1.76 s347.3
Obsidian527.281.75 s1.32 s476.9
MacDown16.541.37 s1.04 s138.4
MarkViewer58.152.15 s1.40 s358.6
MD Viewer410.022.49 sN/A428.8
VS Code1388.933.56 s3.31 s1245.5
Marked145.184.03 s3.23 s314.6

Warm start

ApplicationSize · MiBLightFirst MermaidRAM · MiB
MDVu6.960.78 s0.66 s143.0
Typora44.531.36 s1.39 s343.0
Obsidian527.281.45 s1.21 s417.9
MacDown16.541.64 s1.10 s201.0
MarkViewer58.152.16 s1.19 s356.1
MD Viewer410.021.83 sN/A447.8
VS Code1388.933.13 s2.51 s1272.1
Marked145.183.01 s2.94 s309.1

The MacDown warm reference uses the maintainer’s final manual measurements: 201 MiB RAM and 1.1 s to the first diagram, supplied on 19 October. The original automated observations remain in the JSON evidence; no benchmark was rerun for this correction.

Size is the complete Universal app, excluding mutable profiles and the system browser runtime. Light is the same 91,722-byte diagram-free derivative. RAM is summed physical footprint, median at seconds 7–8, including bundle processes, descendants and all system/XPC services owned by the app according to the OS responsible PID. The Mermaid control has two nodes; Render · Page is its first visible graph, not full-document completion. N/A means source was displayed instead of a diagram.

No document

ApplicationSettled RAM · MiBObserved peak · MiB
MDVu100.6107.5
MacDown103.5103.5

Median at seconds 30–40. MDVu shows the system Open dialog; MacDown shows an empty Untitled document. These are different default states, not identical blank-viewer workloads.

Complete and Heavy · RAM

Application / file / phaseAt 8 s · MiBAfter EOF · MiBPass peak · MiB
MDVu · test-complete.md · cold166.9294.7964.8
MDVu · test-complete.md · warm195.1296.7664.4
MDVu · test-heavy.md · cold195.1710.81306.4
MDVu · test-heavy.md · warm297.7752.51102.5
MacDown · test-complete.md · cold207.3334.8375.1
MacDown · test-complete.md · warm217.9347.2388.8

After EOF is the median 5–10 seconds after verified arrival at the document end. The sampled pass peak includes traversal and Accessibility overhead; it is diagnostic, not clean startup RAM or rendering speed. Reaching EOF does not establish that every optional diagram is supported.

MacDown Heavy: the main process kernel lifetime peak reached 5670.1 MiB. EOF remained unconfirmed after 7 min 42 s; warm was not run. This is a main-process lifetime counter, not the sampled concurrent process-tree peak in the table.

18 October archive · superseded RAM attribution

The current comparison above replaces these older size, startup and RAM observations. The older sampler used temporal attribution for WebKit and did not consistently count other application-owned XPC services; use the new responsible-PID measurements for RAM comparisons.

Partial comparison: 136/192 startup observations; 135/192 full-document passes.

Apple M1 · 8 GiB · macOS 27.0.1 · 18 Oct 2026

Cold start

ApplicationApp · MiBLightFirst MermaidRAM · MiB
MDVu0.5.07.021.55 s1.57 s150 / 186
Typora1.14.1044.531.58 s2.11 s303 / 457
Obsidian1.14.4527.281.76 s1.57 s472 / 548
MacDown3000.0.716.541.29 s1.71 s103 / 141
MarkViewer1.8.1558.151.91 s1.84 s344 / 633
MD Viewer1.2.1410.022.12 sSource displayed422 / 455
VS Code1.142.01388.934.09 s3.43 s1267 / 1272
Marked3.2.21145.183.87 s3.41 s286 / 444

Warm start

ApplicationApp · MiBLightFirst MermaidRAM · MiB
MDVu0.5.07.021.22 s0.69 s145 / 186
Typora1.14.1044.531.75 s1.55 s298 / 455
Obsidian1.14.4527.281.55 s1.18 s473 / 548
MacDown3000.0.716.540.80 s1.36 s101 / 141
MarkViewer1.8.1558.152.16 s1.40 s347 / 605
MD Viewer1.2.1410.022.21 sSource displayed447 / 488
VS Code1.142.01388.933.00 s3.00 s1206 / 1273
Marked3.2.21145.183.65 s3.39 s276 / 406

Universal app file bytes, counting symlinks once; system WebKit and browser profiles excluded. Light is the same 91,722-byte text fixture with diagram fences removed. RAM: median at 8 s / first-8-s peak. The Mermaid control is two nodes; full format coverage is reported separately.

Method and scope

Cold and warm starts

Same Mac, one document per fresh process. First readable body comes from system frames before any input; the Mermaid control requires the visible graph. RAM: median at 8 s / peak in the first 8 s, including helper processes. Application caches are cleared for cold starts; the OS file cache remains. Warm starts follow a complete cold traversal. First valid complete pair per file; later repeats remain in raw data.

Verified full-document passes: 135 / 192. Frame intervals are shown when the capture cannot support a precise point value. Full traversal checks EOF, not rendering speed or automatic success of every diagram. Earlier calibration attempts are excluded.

† Startup timing and first-8-s RAM are qualified independently; later traversal was not confirmed by the input adapter. The paired cold pass completed. The later observed peak is not a full-file memory result.

Common content · diagram fences removed

RAM: median at 8 s / startup peak / full-pass peak. The full-pass peak includes later Accessibility overhead and is a diagnostic, not a clean startup-memory ranking.

Application / fileCold startRAM · MiBWarm startRAM · MiB
MD Viewercommon-test-light.md2.12 s422 / 455 / 5402.21 s447 / 488 / 509
MD Viewercommon-test-medium.md2.05 s370 / 399 / 4601.52 s369 / 401 / 447
MD Viewercommon-test-onescreen.md1.96 s378 / 406 / 4291.10 s337 / 422 / 422
MDVucommon-test-complete.md2.31 s168 / 209 / 7252.35 s168 / 210 / 627
MDVucommon-test-light.md1.55 s150 / 186 / 4191.22 s145 / 186 / 402
MDVucommon-test-medium.md1.13 s149 / 185 / 3720.77 s146 / 184 / 366
MDVucommon-test-onescreen.md1.22 s104 / 160 / 1600.67 s103 / 159 / 159
MacDowncommon-test-complete.mdFrame analysis pending188 / 188 / 260Frame analysis pending179 / 186 / 197†
MacDowncommon-test-light.md1.29 s103 / 141 / 1410.80 s101 / 141 / 141
MacDowncommon-test-medium.md1.69 s115 / 144 / 1530.89 s121 / 163 / 167
MacDowncommon-test-onescreen.mdHTML source displayed95 / 112 / 112HTML source displayed94 / 113 / 113
MarkViewercommon-test-light.md1.91 s344 / 633 / 6362.16 s347 / 605 / 605
MarkViewercommon-test-medium.md1.94 s385 / 828 / 8281.90 s377 / 751 / 776
MarkViewercommon-test-onescreen.mdHTML source displayed303 / 580 / 580HTML source displayed291 / 578 / 578
Markedcommon-test-light.md3.87 s286 / 444 / 4443.65 s276 / 406 / 471
Markedcommon-test-medium.md3.65 s338 / 508 / 5373.07 s336 / 459 / 496
Markedcommon-test-onescreen.md3.70 s277 / 416 / 4543.37 s281 / 414 / 434
Obsidiancommon-test-complete.md1.94 s647 / 742 / 8671.66 s583 / 666 / 804
Obsidiancommon-test-light.md1.76 s472 / 548 / 5721.55 s473 / 548 / 555
Obsidiancommon-test-medium.md1.97 s456 / 480 / 5261.22 s373 / 429 / 481
Obsidiancommon-test-onescreen.md1.49 s345 / 473 / 4731.11 s354 / 470 / 470
Typoracommon-test-complete.md2.41 s420 / 565 / 8012.57 s413 / 566 / 789
Typoracommon-test-light.md1.58 s303 / 457 / 5171.75 s298 / 455 / 509
Typoracommon-test-medium.md1.92 s327 / 518 / 5561.94 s327 / 517 / 558
Typoracommon-test-onescreen.mdHTML source displayed293 / 466 / 670HTML source displayed292 / 469 / 637
VS Codecommon-test-light.md4.09 s1267 / 1272 / 13273.00 s1206 / 1273 / 1273
VS Codecommon-test-medium.md3.38 s1324 / 1349 / 13492.73 s1212 / 1244 / 1333
VS Codecommon-test-onescreen.md3.20 s1262 / 1312 / 13212.89 s1245 / 1285 / 1285
Original project fixtures

RAM: median at 8 s / startup peak / full-pass peak. The full-pass peak includes later Accessibility overhead and is a diagnostic, not a clean startup-memory ranking.

Application / fileCold startRAM · MiBWarm startRAM · MiB
MD Viewertest-light.md2.57 s443 / 476 / 5661.53 s388 / 505 / 562
MD Viewertest-medium.md2.30 s409 / 438 / 5431.76 s400 / 432 / 533
MD Viewertest-onescreen.md2.35 s386 / 414 / 5151.25 s347 / 433 / 504
MDVutest-light.md1.16 s152 / 189 / 6000.76 s162 / 203 / 420
MDVutest-medium.md1.42 s150 / 185 / 5850.92 s166 / 209 / 406
MDVutest-onescreen.md1.37 s356 / 464 / 4640.71 s113 / 181 / 181
MacDowntest-light.md3.53 s167 / 193 / 2273.17 s157 / 188 / 227
MacDowntest-medium.md8.29 s130 / 135 / 2450.94 s156 / 161 / 251
MacDowntest-onescreen.mdHTML source displayed94 / 109 / 121HTML source displayed97 / 136 / 136
MarkViewertest-light.md2.37 s504 / 714 / 9022.56 s490 / 713 / 899
MarkViewertest-medium.md3.32 s646 / 848 / 11192.99 s611 / 745 / 1071
MarkViewertest-onescreen.mdHTML source displayed336 / 562 / 562HTML source displayed357 / 634 / 634
Markedtest-light.md3.79 s522 / 539 / 6183.36 s580 / 612 / 612
Markedtest-medium.md4.49 s484 / 533 / 6454.03 s485 / 548 / 672
Markedtest-onescreen.md4.08 s317 / 447 / 4973.80 s318 / 424 / 482
Obsidiantest-light.md1.87 s666 / 730 / 9421.53 s683 / 758 / 974
Obsidiantest-medium.md1.87 s656 / 671 / 8561.39 s564 / 607 / 803
Obsidiantest-onescreen.md1.46 s385 / 549 / 5491.10 s397 / 535 / 553
Typoratest-light.md1.63 s542 / 566 / 6501.80 s548 / 573 / 692
Typoratest-medium.md1.68 s552 / 588 / 6902.22 s502 / 525 / 678
Typoratest-onescreen.mdHTML source displayed322 / 478 / 598HTML source displayed311 / 487 / 667
VS Codetest-light.md3.56 s1446 / 1504 / 15463.67 s1544 / 1597 / 1597
VS Codetest-medium.md3.36 s1389 / 1442 / 14422.76 s1338 / 1411 / 1498
VS Codetest-onescreen.md3.67 s1295 / 1344 / 13442.81 s1300 / 1335 / 1335
First Mermaid · two nodes

RAM: median at 8 s / startup peak / full-pass peak. The full-pass peak includes later Accessibility overhead and is a diagnostic, not a clean startup-memory ranking.

Application / fileCold startRAM · MiBWarm startRAM · MiB
MD Viewerdiagram-control.mdSource displayed298 / 325 / 325Source displayed269 / 321 / 321
MDVudiagram-control.md1.57 s102 / 267 / 2670.69 s80 / 117 / 117
MacDowndiagram-control.md1.71 s110 / 167 / 1671.36 s110 / 168 / 168
MarkViewerdiagram-control.md1.84 s245 / 437 / 4371.40 s244 / 441 / 441
Markeddiagram-control.md3.41 s201 / 271 / 3163.39 s201 / 271 / 316
Obsidiandiagram-control.md1.57 s238 / 294 / 2941.18 s244 / 302 / 302
Typoradiagram-control.md2.11 s223 / 335 / 3351.55 s224 / 357 / 357
VS Codediagram-control.md3.43 s1200 / 1269 / 12693.00 s1178 / 1246 / 1246
Complete 73-example document

RAM: median at 8 s / startup peak / full-pass peak. The full-pass peak includes later Accessibility overhead and is a diagnostic, not a clean startup-memory ranking.

Application / fileCold startRAM · MiBWarm startRAM · MiB
MD Viewertest-diagrams.md2.19 s365 / 393 / 4471.22 s336 / 390 / 441
MDVutest-diagrams.md1.24 s172 / 431 / 9160.72 s153 / 204 / 415
MacDowntest-diagrams.md2.67 s157 / 183 / 2031.66 s152 / 160 / 196
MarkViewertest-diagrams.md2.51 s454 / 699 / 7972.45 s466 / 753 / 780
Markedtest-diagrams.md4.04 s493 / 523 / 5555.35 s421 / 549 / 561
Obsidiantest-diagrams.md1.73 s527 / 554 / 9191.32 s547 / 583 / 929
Typoratest-diagrams.md1.38 s412 / 593 / 8101.33 s427 / 606 / 765
VS Codetest-diagrams.md3.33 s1395 / 1452 / 15082.74 s1384 / 1434 / 1472

Diagram formats

The same 73 examples in cold and warm passes. Built-in renderers, no extra plugins. A diagram is counted only when drawn; source and errors are separate. This is a catalogue of MDVu-supported inputs, not every feature unique to other apps.

ApplicationRenderedErrorSource
MDVu0.5.07300
Typora1.14.10291133
Obsidian1.14.4281233
MacDown3000.0.7261433
MarkViewer1.8.15291133
MD Viewer1.2.10073
VS Code1.142.038233
Marked3.2.2137333
All 73 diagram examples

Same valid sources, built-in engines. Errors and source code do not count as diagrams. This catalogue covers MDVu-supported inputs, not every feature unique to other apps.

IDFormatMDVuTyporaObsidianMacDownMarkViewerMD ViewerVS CodeMarked
D001Mermaid / flowchartDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D002Mermaid / C4ContextDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D003Mermaid / requirementDiagramDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D004Mermaid / quadrantChartDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D005Mermaid / C4ContainerDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D006Mermaid / C4ComponentDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D007Mermaid / architecture-betaDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D008Mermaid / erDiagramDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D009Mermaid / sankeyDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D010Mermaid / sequenceDiagramDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D011Mermaid / stateDiagram-v2DiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D012Mermaid / ishikawa-betaDiagramDiagramDiagramErrorDiagramCodeDiagramDiagram
D013Mermaid / C4DynamicDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D014Mermaid / zenumlDiagramDiagramErrorErrorErrorCodeDiagramError
D015Mermaid / swimlane-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D016Mermaid / C4DeploymentDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D017Mermaid / ganttDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D018Mermaid / gitGraphDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D020Mermaid / xychartDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D021Mermaid / radar-betaDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D022Mermaid / timelineDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D023Mermaid / kanbanDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D024Mermaid / mindmapDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D025Mermaid / treemap-betaDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D027Mermaid / classDiagramDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D028Mermaid / journeyDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D029Mermaid / pieDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D030Mermaid / block-betaDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D031Mermaid / packetDiagramDiagramDiagramDiagramDiagramCodeDiagramDiagram
D032Mermaid / eventmodelingDiagramErrorErrorErrorErrorCodeDiagramDiagram
D033Mermaid / treeView-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D034Mermaid / venn-betaDiagramDiagramDiagramErrorDiagramCodeDiagramDiagram
D035Mermaid / wardley-betaDiagramErrorErrorErrorDiagramCodeDiagramDiagram
D036Mermaid / cynefin-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D038PlantUML / Sequence DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D039PlantUML / Use Case DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D040PlantUML / Class DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D041PlantUML / Object DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D042PlantUML / Activity Diagram — Current SyntaxDiagramCodeCodeCodeCodeCodeCodeCode
D043PlantUML / Activity Diagram — Legacy Syntax ProbeDiagramCodeCodeCodeCodeCodeCodeCode
D044PlantUML / Component DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D045PlantUML / Deployment DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D046PlantUML / State DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D047PlantUML / Timing DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D048PlantUML / JSON DataDiagramCodeCodeCodeCodeCodeCodeCode
D049PlantUML / YAML DataDiagramCodeCodeCodeCodeCodeCodeCode
D050PlantUML / EBNF DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D051PlantUML / Regex DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D052PlantUML / Network Diagram (nwdiag)DiagramCodeCodeCodeCodeCodeCodeCode
D053PlantUML / Salt WireframeDiagramCodeCodeCodeCodeCodeCodeCode
D054PlantUML / ArchiMate DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D055PlantUML / SDL ShapesDiagramCodeCodeCodeCodeCodeCodeCode
D057PlantUML / Gantt DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D059PlantUML / MindMap DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D060PlantUML / WBS DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D063PlantUML / Information Engineering DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D065PlantUML / Chart DiagramDiagramCodeCodeCodeCodeCodeCodeCode
D075Mermaid / usecase-betaDiagramErrorErrorErrorErrorCodeErrorError
D076Mermaid / agentflow-betaDiagramErrorErrorErrorErrorCodeErrorError
D077Mermaid / railroad-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D078Mermaid / railroad-ebnf-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D079Mermaid / railroad-abnf-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D080Mermaid / railroad-peg-betaDiagramErrorErrorErrorErrorCodeDiagramDiagram
D090PlantUML / DOTDiagramCodeCodeCodeCodeCodeCodeCode
D091PlantUML / PACKETDiagramCodeCodeCodeCodeCodeCodeCode
D100PlantUML / C4-PlantUML / ContextDiagramCodeCodeCodeCodeCodeCodeCode
D101PlantUML / C4-PlantUML / LandscapeDiagramCodeCodeCodeCodeCodeCodeCode
D102PlantUML / C4-PlantUML / ContainerDiagramCodeCodeCodeCodeCodeCodeCode
D103PlantUML / C4-PlantUML / ComponentDiagramCodeCodeCodeCodeCodeCodeCode
D104PlantUML / C4-PlantUML / DynamicDiagramCodeCodeCodeCodeCodeCodeCode
D105PlantUML / C4-PlantUML / DeploymentDiagramCodeCodeCodeCodeCodeCodeCode
D106PlantUML / C4-PlantUML / SequenceDiagramCodeCodeCodeCodeCodeCodeCode
D110PlantUML / ArchiMate / business, application and technology layersDiagramCodeCodeCodeCodeCodeCodeCode