About this tool
See the allowed version window for ^ and ~ semver ranges on a number line, with allowed and blocked neighbours.
This visualizer draws the allowed update window of a caret (^) or tilde (~) semver range on a number line, marking each neighbouring version as allowed or blocked. It applies the node-semver desugaring npm uses: ^1.2.3 means >=1.2.3 <2.0.0, ~1.2.3 means >=1.2.3 <1.3.0, and the caret tightens on 0.x versions (^0.2.3 stops at 0.3.0, ^0.0.3 allows only itself). Developers reviewing dependency ranges see at a glance exactly where the window opens and where it slams shut.
Open Caret Tilde Range Visualizer on AltFTool — it loads instantly in your browser.
Paste your code or data sample into the workspace.
Pick the format, conversion, or analysis you need.
Copy the polished result straight back into your project.
Neighbouring versions are plotted in order and coloured allowed or blocked, with the base version highlighted.
Windows come from the node-semver caret and tilde rules, including the stricter 0.x and 0.0.x cases.
Always shows the lowest allowed version (inclusive) and the first blocked version (the exclusive bound).
Everything from 1.2.3 up to but not including 2.0.0 — so 1.2.4, 1.3.0 and 1.9.9 are allowed while 2.0.0 is blocked. The caret keeps the left-most non-zero digit (here the major) fixed and lets everything to its right float.
Because on 0.x versions the left-most non-zero digit is the minor, so ^0.2.3 desugars to >=0.2.3 <0.3.0 — patch updates only. This matches SemVer's warning that 0.x APIs may break at any time, so npm refuses to auto-install 0.3.0. In the extreme case ^0.0.3 allows only 0.0.3 itself.
Use ~ when you want only bug-fix (patch) updates: ~1.2.3 allows up to 1.2.x but blocks 1.3.0, whereas ^1.2.3 accepts every 1.x from 1.2.3 up. Teams often pick tilde for risk-sensitive production dependencies and caret (npm's default on install) for everything else.
No — the upper bound is always exclusive. ^1.2.3 means strictly below 2.0.0, so 2.0.0 itself never matches; the same applies to 1.3.0 for ~1.2.3. Only the lower bound, the version you wrote, is inclusive.