Skip to content
EquivalentLogo

A Smart SVG™ adapts to every reader.

Everyone else ships variants: a light logo and a dark one, a full lockup and a small-screen mark. A Smart SVG™ is one file that already contains those decisions.

It carries the colors for light and dark mode, a layout for a narrow screen, high-contrast handling and the name a screen reader needs. No runtime, no library, nothing to keep in sync.

One graphic adapting across a desktop browser, a phone, and a code editor A browser window and a phone screen show the same graphic, joined by the Equivalent mark to a code panel below. A row of device chips and an SVG badge sits between them, indicating one file serving every surface. +SVG logo.svg <svg role="img"> @media (prefers-color-scheme: dark) @media (max-width: 480px) </svg>

A graphic that carries its own instructions.

An SVG is a picture written as code rather than stored as a grid of colored dots. Because it is code, a browser draws it fresh at whatever size it is asked for so it stays crisp on any screen.

Most SVGs stop there. A Smart SVG™ carries logic as well as shapes and responds to the reader’s settings by itself.

A grid of colored dots beside the same shape written as code On the left, a mark built from square pixels that go blocky when enlarged. On the right, the same mark drawn from two lines of code, staying smooth at any size. STORED AS DOTS WRITTEN AS CODE <circle r="34"   stroke="..." />

Built for the graphics a product runs on.

Icons, illustrations, interface components, and the rest of the artwork your interface depends on. Most of it still ships as a static file: storage, bandwidth and energy you do not need, duplicate variants to keep in sync, and often nothing meaningful for blind and low-vision readers. That is the work a Smart SVG™ takes on.

Four kinds of compatible graphic A row of four labeled marks: icons, illustrations, interface components, and diagrams. These are the graphic types a SmartSVG™ can be made from. Icons including icon fonts Illustrations drawn as vectors Components that follow the theme Diagrams where sharpness matters
A graphic carrying its own logic A file card holding a code bracket at its center, ringed by four condition markers for light, dark, narrow and high-contrast. The conditions are inside the file rather than around it. { } light · dark · narrow · contrast

The logic lives in the file

Light and dark colors, a narrow-screen layout and high-contrast handling are all inside one file, written in CSS the browser already supports. No runtime, no library, nothing to configure.

A graphic that carries its own accessible name A file card containing an accessibility figure, with a title and description label attached inside the file rather than supplied by the surrounding page. title desc

It brings its own accessible name

A title and description travel with the graphic instead of being supplied by whatever page it lands on so the name survives being reused somewhere else.

A folder of exported variants collapsing into one file A stack of five separate exported files on the left, joined by arrows to a single file on the right that replaces all of them. five exports logo.svg one file

One file instead of a folder

A Smart SVG™ is usually smaller than the set of variants it replaces and there is nothing left to keep in sync when the brand changes.

Keep the asset. Lose the waste.

A design tool exports more than you drew: editor metadata, definitions nothing references, coordinates carried to more decimal places than a screen can show. None of it renders. All of it downloads.

Equivalent strips out the unnecessary parts when it converts your file to a Smart SVG™. What comes back is the scalable asset, the logic that adapts it, and none of the bloat that was weighing it down.

What comes out of a file on the way through An exported file drawn as four stacked rows: three dashed rows labeled editor metadata, unused definitions and extra decimal places, and one solid row labeled the drawing. An arrow leads to a second, much shorter file holding only the solid row. AS EXPORTED editor metadata unused definitions extra decimal places the drawing WHAT YOU KEEP the drawing, and the logic

PNG, ordinary SVG and one file that does both jobs.

A Smart SVG™ is the same standard SVG any browser already renders. The intelligence is inside it. If our service disappeared tomorrow, every file we have produced would keep working.

PNG, ordinary SVG, and SmartSVG™ compared Three columns. A PNG needs a separate file for each condition and blurs when scaled. An ordinary SVG stays sharp but still needs a second file for dark mode. A SmartSVG™ is one file that handles every condition. PNG logo@2x .png 4+ files to maintain Blurs past its size. Alt text lives in the page. ORDINARY SVG logo.svg 2 files to maintain Sharp at any size. Still needs a dark copy. SmartSVG™ logo.svg light · dark · narrow · contrast + its own accessible name 1 file to maintain Sharp at any size. Every condition, one file.

Open it. Every line does something.

It is a text file, not a binary. The format is XML, the same family as HTML, so you can open it in any editor, read the diff in a pull request, and edit it by hand. A PNG offers none of that.

Because it is code, it travels the way your code does. The same file drops into React, Next.js, Vue, Svelte, Angular, Astro, Nuxt, Hugo, Jekyll, Eleventy, Gatsby or Zola, and there is a working sample for every one of them.

And because its colors are tokens rather than values baked into the artwork, a palette change reaches it the same way it reaches the rest of your interface. Designers stay in tokens, developers stay in code, and the handoff stops being the place things break.

What is inside a SmartSVG™ file An editor window showing five parts of a SmartSVG™ in order: the accessible name, the color tokens, the dark-mode block, the narrow-screen swap, and the forced-colors block. Each is annotated in the right margin. logo.svg 1 <svg role="img" lang="en"> <title>Equivalent</title> Its own accessible name 2 --ink: hsl(0 0% 9%); The palette, as tokens 3 @media (prefers-color-scheme: dark) { --ink: hsl(0 0% 97%); Same shapes, new values 4 @media (max-width: 480px) { #wide { display: none; } A different lockup, small 5 @media (forced-colors: active) { fill: CanvasText; The reader's palette wins

Bring us something complicated and help us make it better.

There is a free account to start on, and a paid plan that lifts its limits and adds API access. Either way, the files we learn most from are the awkward ones: the intricate illustration, the icon set nobody has touched in three years, the diagram with more layers than it needs.

Test it, try to break it, and tell us what happened. Every report goes on our public board, and the things people find are what we fix next.

Putting your own assets through the beta A folder of your existing exports on the left, a drop zone in the middle, and one SmartSVG™ on the right, with a note that every report goes to a public board. YOUR ASSETS logo-FINAL-v3.png icon@3x.png brandmark-old.eps chart.jpg drop it in ONE SmartSVG™ logo.svg adapts

Get in touch

Tell us what you are building and what you need your graphics to do. Questions about the beta, the API, or whether a Smart SVG™ fits your stack are all welcome.