What's new
The biggest recent additions to Hackvertor. Everything here is live now, so head to the converter and try it out.
Conditions: check tags with && , || and !
NewSeptember 2026Tags can now make decisions. A tag that implements a check() method returns true or false, and you can combine checks with &&, || and ! to choose what gets output. Encode only when the input is JSON, fall back when a decode fails, or pick between two fixed values:
<@check(isJson)>{"a":1}</@check> && <@encode(base64)>{"a":1}</@encode>
<@check(isNumeric)>13a37</@check> && number || not a number
!<@check(isNumeric)>abc</@check> && <@encode(base64)>abc</@encode>- Plain text works as an operand, so a condition can output a fixed value either way.
- A tag that throws counts as false, so
||moves on to your fallback. - Conditions can sit inside other tags, and
&&binds tighter than||. - The new Examples menu above the input loads worked conditions in one click, in either Tags or Jigsaw mode.
Read more in Conditions with && and ||.
Jigsaw mode
NewSeptember 2026Build conversions visually. Switch the input to Jigsaw and every tag becomes a puzzle piece: start with a text piece, then snap tags on to the right, each one wrapping the piece before it. The chain is turned into ordinary Hackvertor tags for you, so you can flip back to Tags mode at any time.
&&and||operator pieces let you build whole conditions out of check tags without typing any syntax.- Text pieces can join an expression as operands, so a row can end in a fixed value.
- Expand the canvas to full width when a chain outgrows the editor, and contract it again when you are done.
- The text dialog floats over the canvas, so editing a piece never shifts your layout.
A frozen, isolated sandbox
September 2026The sandbox is now frozen before any tag runs, so one tag can never interfere with another. Built-ins such as btoa, the DOM prototypes, hv and every tag instance are read-only, and assigning to them throws a TypeError. Installing a tag from the store cannot change how your other tags behave.
Writing your own tags? Keep per-call state in local variables rather than on this.
Variables that work in any order
September 2026A variable can now be read before it is set. If getVariable appears earlier in the input than the setVariable that fills it, the read simply waits for the write later in the same conversion. Tag authors get the same behaviour from hv.awaitVariable(name).
Better tools for tag authors
September 2026- A machine-readable API reference documents everything available to tag code, and the sample code points to it.
- A Remove comments button strips every comment from your tag code in one click.
- Declared arguments are now shown in the tag's source code, so you can see exactly what a tag accepts.
- Hovering a tag in the editor highlights the option that is actually selected, and the tag store search has been fixed.
Ready to build one? Create a new tag or read Creating your own tags.