Skip to main content
Version: v2

Why modernGraphTool?

The audio measurement community's needs have outgrown the tools that once served it well.

modernGraphTool is a ground-up rewrite — built on modern web technologies with a modular architecture — designed to give measurement operators and enthusiasts a tool that can evolve with the community.

The CrinGraph Legacy

CrinGraph appeared around 2019 and quickly became the de facto standard for frequency response visualization in the audio enthusiast community.

It did its original job well: load measurements, overlay curves, compare headphones. Simple and effective.

Most measurement databases in the squig.link network still run CrinGraph or a derivative of it, and its influence on how we visualize FR data is undeniable.

Full data compatibility

modernGraphTool is not a 'rejection' of CrinGraph — it's a continuation.

It uses the same data format, the same folder structure, and the same phone_book.json. Your existing measurement data works without any changes.

Where Things Got Difficult

As the community grew, so did the demands on the tool — and CrinGraph's original design wasn't built to accommodate them.

A Single Script Does Everything

CrinGraph's core functionality — data loading, graph rendering, UI construction, state management — lives in a single JavaScript file spanning thousands of lines. There is no separation between concerns.

Even for experienced developers, making targeted changes without breaking something else is a challenge. For operators without programming experience, it's practically impossible.

Styling Is Scattered

The visual appearance is spread across multiple CSS files without variables, combined with inline styles in dozens of createElement calls throughout the JavaScript. There is no single file you can edit to theme the entire tool.

Changing a color scheme or adapting the look for yourself means hunting through both CSS and JS, hoping you catch every instance.

Forks Diverge, Features Fragment

When enthusiasts wanted new capabilities — like preference adjustments for Diffuse Field targets — they had to fork the entire project and modify the core script.

Each fork became its own island. Complexity of 'single script does everything' made it hard to port features across forks, and operators had to choose which subset of capabilities they wanted — with no way to combine them.

How modernGraphTool Is Different

modernGraphTool is a completely new graph tool built on SvelteKit, TypeScript, and D3.js.

Rather than patching an aging codebase, it was designed from the start for the features the community needs.

CrinGraph / ForksmodernGraphTool
ArchitectureSingle JS script (thousands of lines)Modular SvelteKit components (TypeScript)
ThemingMultiple CSS files + inline stylesSingle theme.css with CSS variables + Theme Generator
Target adjustmentFork-dependent; one target, 3–4 hardcoded filtersPer-target adjustments, configurable filters, filter presets
Parametric EQExternal plugin scripts, fragmented across forksBuilt-in with AutoEQ, real-time audio preview, and interactive EQ
Device PEQ bridgeExternal plugin by jeromeofImported and refactored as a built-in component
Multi-languageNot supportedEnglish + Korean (compile-time i18n, extensible)
PerformanceUnbundled vanilla JSBundled with tree-shaking and code splitting
UpdatesManual file replacementCDN mode: auto-updates without re-uploading
Data formatphone_book.json + FR text filesSame format — drop-in compatible

Built for Operators

modernGraphTool is designed so that measurement database operators can set up, customize, and maintain their site without touching source code.

  • One file to configureconfig.js controls everything: initial devices, targets, normalization, watermarks, feature toggles, and more.
  • One file to themetheme.css uses CSS custom properties for graph colors, UI accent, and more. The online Theme Generator creates it for you.
  • CDN deployment — Point your page at a CDN and your site receives updates automatically. Your data and config stay on your server, untouched.
  • Data compatibility — Keep your existing data/ folder and phone_book.json. No conversion, no migration scripts.
  • Dual-hosting — Run modernGraphTool alongside your existing CrinGraph on the same domain if you want to transition gradually.

Actively Maintained

CrinGraph and its major forks are no longer actively maintained. modernGraphTool is — the developer is a 'Squiggler' and audio reviewer, just like you.

New features, bug fixes, and improvements will be released regularly. If you use CDN mode, they arrive automatically without any action on your part.

Ready to get started?

Head to the Setup Guide to set up your environment, or jump to Customizing the Page if you already have modernGraphTool running.