Skip to main content
Support

Browse by category

All categories
Home

Changelog

Every feature, fix, and improvement — grouped by area. Click any category to expand.

PDF Editor10
changedOne consistent editor across PDF and every file viewer

The PDF Editor and all seven file viewers (STL, OBJ, PLY, GLB, 3MF, STEP, DXF) now share a single editor shell, so the layout, toolbars, and mobile behaviour are identical wherever you are.

What changed

  • Unified shell — open the PDF Editor or any 3D/CAD viewer and the chrome is the same: top bar, mode switches, right-rail panels, and command menu sit in the same place every time. Learn one, know them all.
  • Mobile editor bar — phones get a canonical bottom bar and a slide-up Modes sheet instead of a cramped desktop toolbar. Measure and section controls float as top bars so they don't hide behind the app header.
  • Bigger touch targets — sample, splash, and dismiss buttons now meet the 44px minimum for comfortable tapping.

Bug fixes

  • Fixed a hydration error (React #418) that could flash or misrender tool pages on first load.
  • Gerber toolbar collapses to icons on narrower screens instead of overflowing.
  • STL manifold badge no longer overlaps the status pill; closed accordion headers no longer crush on small screens.
fixedSTEP engine fixes — units, product names, arc surfacing, crash on every real file

The Rust-side STEP engine got three structural improvements followed by a critical bugfix that surfaced during code review. The first three add real-world file support that was previously broken; the fourth fixes a crash that was hitting every production STEP file with a header section.

  • Imperial and bare-metre units now respected — files declaring INCH (conversion-based) or bare METRE (no SI prefix) were rendering at the wrong scale because the tessellator assumed millimetres. The engine now scans the unit context once per file and scales every vertex to mm. Mixed-unit contexts (e.g. cm for accuracy plus mm for geometry) resolve to the geometry unit.
  • PRODUCT names with NULL descriptions now load — files emitted with a NULL description on the PRODUCT entity (very common — e.g. JDC4_.stp) used to silently drop the whole entity, so assembly tree nodes fell back to generic "Mesh 1, Mesh 2…" names. They now surface the actual product names.
  • Arc parametric data surfaced for 1-click radius — STEP CIRCLE entities are now extracted into a parallel array of centre, normal, and radius, ready to power a 1-click radius measurement on arc edges (instead of the current 3-click flow). Snap targets land in world-space aligned to the visible geometry.
  • Crash on every real file fixed — the unit and arc scanners assumed the first ENDSEC; was the data-section terminator; in practice that's the HEADER terminator, which sat earlier in the byte stream and produced an invalid slice range that crashed the engine. The scanners now search forward from the data section, are wrapped in a panic guard so future regressions surface as clean parse errors, and the tessellation tolerance now scales with the unit factor so sub-cm fillets on METRE-unit files don't trip the mesher.
changedCAD viewer polish session — pan tool, explode, navigation primitives, transitions

Big polish push across the 3D viewers focused on closing day-one usability gaps versus the desktop CAD tools they replace. Every viewer now ships the same nav toolset, the same keyboard shortcuts, and smooth view transitions.

  • Pan tool — chip in every 3D viewer's top toolbar; while active, left-drag pans and right-drag keeps orbit (matches Autodesk and Onshape).
  • Home view — explicit Home button restores the camera to the view that was framed when the file loaded, not a static default. Iso-views and cube-clicks tween for 300 ms instead of hard-snapping.
  • Bookmarks menu — five saveable named camera views with save / restore / rename / clear, plus quick jumps to the seven standard cube views. The storage hook already existed; every viewer now has a UI for it.
  • Tree search — tree-driven panels (assembly tree, 3MF parts, OBJ groups, glTF nodes) get a name-filter input above the list when there are more than five nodes.
  • STEP explode — the explode slider already worked for 3MF; now the STEP viewer has the same chip plus an E shortcut.
  • Per-snap-type glyphs — measurement snap markers now report whether the snap landed on a vertex, an edge midpoint, or a face centroid, instead of always reading "vertex".
  • Polygon picking polish — area mode now shows running area on the cursor coach, a dashed ghost outline of the in-progress polygon, and a pulsing yellow "close-ring" marker over the first vertex when the cursor gets close enough to close the loop.
  • Zoom window — marquee-drag a rectangle on the canvas, release, and the camera tweens to frame that region. Single-use (auto-disables after the zoom), matching Autodesk and Onshape.
  • Display controls — three new runtime presets (background: theme/dark/light/gradient; lighting: studio/outdoor/three-point/soft; render quality: low/auto/high).
  • Face selection + flood-fill — click a face, the viewer flood-fills coplanar triangles into a translucent cyan highlight, then exposes "Fit to selection" in the right-click context menu so you can frame just that face.
  • Right-click context menu — Fit to selection, Home view, Start measure, Clear selection — available on the canvas of every 3D viewer.
  • Reduced-motion respect — when the OS reports prefers-reduced-motion, view transitions snap instead of tweening.
addedCAD viewers: walk-through mode, markup overlay, Autodesk-grade measure

The 3D viewers (STEP, STL, 3MF, OBJ, PLY, GLB) picked up a wave of features that close the gap with Autodesk Viewer and Onshape. You can now walk through a 3D model first-person, annotate it on top of the canvas, and measure with four tools instead of two — across every supported format.

  • First-person walk mode — toggle "Walk (WASD)" from the command palette in any 3D viewer. Move with WASD, look around by holding the mouse, descend or rise with Q/E. Walk speed automatically scales with model size so a warehouse and a tiny part both feel natural.
  • Markup overlay everywhere — every 3D viewer now has the rectangle, sticky-note, and arrow annotation tools that previously only existed on the STEP viewer. Annotations are remembered per file.
  • Measure UX rebuild — a new top toolbar (in place of the old right-rail accordion) carries four measurement modes: distance, angle, radius, and area. Distance and area gain an along-surface mode that follows curved geometry instead of cutting in straight lines. Each measurement gets a floating leader-line label on the canvas that tracks the camera as you orbit; click the label to delete the entry.
  • Undo, retry, escape — Cmd/Ctrl+Z undoes the last measurement, Backspace pops the last pick mid-polygon (so a misclick during a 5-point area no longer means restarting), and Esc cancels the in-flight pick buffer without losing committed entries.
  • Section box fix — the dotted "stippling" pattern that appeared on section-box faces at default slider extremes is gone. Clip planes now skip extreme bounds entirely and are nudged slightly off the surface on partial crops.
fixedTheme toggle on every editor page

Editor pages (PDF Editor, Gerber Viewer, Compare PDF) were missing the light/dark toggle in the editor header. You had to leave the editor and go back to a regular page to flip themes. The toggle now lives in the editor header alongside the Support button, persists your choice across navigations, and uses a smooth cross-fade transition.

5 older entries
PDF tools40
fixedCompare PDF — One edit, one row on large drawingsOpen Compare PDF

Large plotted drawings list far fewer rows for the same changes, with every piece still inside its row and marked on the page.

  • A value edited on a plot is one row: a dimension whose digit changed used to list its text and its drawn digit as two rows. They are now one row, with the old and the new value stated.
  • Nearby pieces group the same at any size: a sheet lettered larger is read as the same drawing plotted larger, so pieces of one change sit together in one row there too.
  • A changed note is one row, its lettering included: on drawings whose letters are drawn as strokes under invisible search text, the strokes of a changed word now sit in that word's row instead of listing as separate drawn rows.
  • A redrawn sheet is one row: a sheet where most of the drawing differs (a view regenerated, a sheet redrafted on a new template) is listed once as "sheet redrawn" with the share that differs. Its text and value changes keep their own rows, and on a schematic each part changed still has its own row.
changedCompare PDF — Sharper on drawings, quieter on documentsOpen Compare PDF

Compare PDF now finds edits hidden inside pictures on board and flex drawings, and lists fewer rows for changes that are really one change. A struck passage, a renumbered list or a deleted drawing sheet now reads as one change, not hundreds. On fab drawings plotted from CAD, unchanged notes and nudged balloons no longer show up as changes, and each sheet of a reissued drawing set is compared with its own partner.

Each sheet compared with its partner

  • Sheets inserted, removed or moved: a drawing set reissued with new sheets in the middle still compares each sheet with the one it replaced. A title block that every sheet carries no longer makes two unrelated sheets look alike, and a sheet that was redrawn from scratch shows as a sheet removed and one added rather than being compared with whichever sheet came next.

Finds more

  • Edits inside board renders: a version label on the silkscreen of a 3D render (v0.3 to v0.4), white lettering on a dark solder mask, and labels swapped between two buttons are each pointed to where they changed, not shown as one changed picture.
  • Tables pasted as pictures: a quantity edited in a table set as an image is found by its words, even when a section was added under the table.
  • Small marks on panels: fiducials removed from a panel's rails are listed, even when the boards on the panel moved apart.
  • A page of renders paired: a page holding only pictures pairs with its partner by where the pictures sit, so its edits are compared rather than shown as a page removed and a page added.

Fewer rows for the same change

  • A drawing sheet added or removed is one row, its pieces folded under it. Documents still list what each removed or added page held.
  • A paragraph moved elsewhere is one row, even when it lands in a column of short lines.
  • Text a page break only moved (a table row split differently across two pages, a cell carried to the next page) folds with the layout instead of reading as removed and added.
  • Renumbered lists (a reference list after a citation was removed) and line numbers on long drafts (1015, 1016 ...) fold as layout.
  • A passage struck line by line, as a reported bill strikes its original text, is one row per struck passage.
  • Zone letters and numbers along a drawing's border, relabelled when the sheet moved to other paper, are one row.
  • Fab drawings plotted from CAD draw their lettering as strokes, with the words as an invisible search layer on top. They now compare as drawings, so unchanged notes and tolerances no longer read as removed and added.
  • A balloon, datum letter or note nudged a few points on a fab drawing plotted from CAD folds as layout, one click away. Schematics keep exact positions, printed ones included: a net label placed elsewhere is wired elsewhere, so it stays listed.

Every change is still listed: rows that belong to one change are grouped, each piece keeping its own highlight on the page.

addedCompare PDF — Create reportOpen Compare PDF

Compare PDF now makes a report you can read, print and pass on. Press Create report after a comparison, choose a layout and a page size, and get a typeset PDF, a Word file or an HTML page that presents every change the comparison found.

What the report holds

  • A cover with the answer first: both files with their SHA-256 fingerprints, one sentence on what changed and whether every page was compared, and the count of each kind of change.
  • A summary: a strip with one cell per page shows where the changes are, and the key changes (values, hidden content, and anything you starred or marked for follow-up) come first.
  • One entry per change: its words as a redline, deletions struck through and insertions underlined, beside a picture of the place from both files. A change repeated across pages is one entry that names every place.
  • An appendix with what the pages do not show: changes hidden from view, hidden content in both files, the changes folded into others with their reason, what could not be compared, document properties, layers and signatures.
  • A way to check it: the fingerprints and the receipt link let anyone holding the two files confirm which files the report describes.

Three layouts

  • Document: every change in page order.
  • Drawing set: a sheet index with each sheet's revision, revision clouds and outcome, then the changes sheet by sheet. A drawing set opens in this layout.
  • Contract: the changed passages as a redline, the way legal reviews read.

Formats

  • PDF: typeset with embedded fonts, bookmarks for every section, page and sheet, and a running header on every page.
  • Word: the same report as a .docx, for notes and tracked edits.
  • HTML: the accessible version, with headings, table headers and alt text on every picture.
  • CSV and JSON: the change list for a spreadsheet, as before.

Long comparisons stay readable: past 120 changes, the key changes get full entries and the rest are one line each in a change list. Every change is listed once, whatever the layout or format.

changedCompare PDF — choose the pages of a long documentOpen Compare PDF

Compare PDF compares a long document by holding every page of both versions in your browser at once, and a document of a few thousand pages can need more memory than a browser tab has. Long documents now stop before the comparison starts and ask which pages to compare.

Improvements

  • Choose the pages to compare: when either file has more than 800 pages (200 on a phone or tablet), you choose a range of pages on each side, such as one part of a long regulation, and only those pages are compared. The results say which pages were compared.
  • Or compare every page: you can still compare the whole document, with a clear note that the tab may stop responding or close before it finishes.
  • Drawing sets are not limited: a drawing set is compared sheet by sheet, so its page count does not matter.
changedCompare PDF — edits inside tables pasted as picturesOpen Compare PDF

When a table is pasted into a document as a black-and-white picture, such as a quantities sheet in a bid addendum, and the new version lays it out again, Compare PDF now highlights the entries that changed instead of the whole picture. Nothing is read or recognised: each word's ink is matched to the same ink on the other side.

Improvements

  • Edited entries in a pictured table: a quantity changed from 2,500 to 2,135, or from 38 to 28, is highlighted on both sides, and rows added under the table are highlighted on the new version. This holds when the new version widens its columns, wraps a row onto two lines, or moves rows.
  • Only what changed: words that stayed the same are matched wherever they moved to, so a re-laid-out table shows its few edits, not every row.
35 older entries
Image tools7
addedPhoto to 3DOpen Photo to 3D

New tool: open one photo and turn it into a tilting 3D pop-out, a relief plaque or a backlit lithophane, then download a file that is checked and ready to 3D print. These are raised pictures, not full 3D figurines.

Three ways to use a photo

  • Pop-out: the photo gains depth you can tilt with a finger, a mouse or the phone's motion. Export a looping MP4 or GIF, a GLB, or view it in AR.
  • Relief plaque: two on-device readers shape it, one for the large shape and one for surface direction, so noses, eyes, fur and stonework come out as form. Skin tone and tattoos are not carved in as fake bumps.
  • Lithophane: thickness follows how light passes through white PLA, with a backlit preview of the print.

A print check on every file

  • Watertight: one closed solid with no open edges.
  • Size: the stated millimetres match the file, against a 180 mm print bed.
  • Thinnest part: shown in red if any point is under the 0.8 mm safe minimum.
  • Hanging hole: added only where it fits, and the check says why when it doesn't.
  • Formats: STL, 3MF, and a 16-bit depth PNG for laser engraving and CNC.

Honest about depth

  • Can't tell: a blank, uniform or sky-only photo says so, and offers a lithophane instead of inventing a relief.
  • Not much depth: a flat picture, such as a poster, gets a plain warning.
  • One download, then offline: the two readers (about 120 MB) are checked against their fingerprints and kept for later visits.
addedCompress Image to KB — KB ranges, exact pixels and clean signatures

Compress Image to KB now lands a photo, signature or scan inside the size range a portal asks for, such as 20–50 KB for a photo or 10–20 KB for a signature, at the pixel size the portal names.

What's new

  • Between two sizes: choose Between and enter a minimum and a maximum, such as 20 and 50 KB. The file lands between 20,480 and 50,000 bytes, which passes whether a portal counts 1 KB as 1,000 or 1,024 bytes.
  • Exact pixel size: set a width and height in pixels, centimetres or inches at a DPI. Preferred lets Loft adjust the size when the file can't otherwise reach the range, and says so; Required keeps it exact. Crop to fill (keeping the top, centre or bottom) or fit inside on white.
  • Signature clean-up: whitens the paper, darkens the ink and trims the margins of a signature, thumb impression or handwritten page, with a before-and-after preview. Your strokes are never redrawn.
  • Exam and portal presets: IBPS photo, signature, left thumb impression and handwritten declaration; SSC CGL signature; UPSC photo and signature; NEET (UG) photo, signature and impressions; and the SSCASN KTP scan. Each preset quotes its notice, links to it, shows the date it was checked, and sets JPEG and any required file name, such as UPSC's photo.jpg.

Improvements

  • Plain words when a size can't be reached: the row shows "Below 10 KB" or "Over 20 KB" with a sentence saying why and what to change, and keeps the closest file for download. Loft never pads a file with filler bytes.
  • Fewer tries for big photos: a large photo going to a small limit now finds its pixel size in a few encodes instead of shrinking 15% at a time, and keeps more of its pixels.

Bug fixes

  • Photos for 20–50 KB portals used to land just under 20 KB, which those portals reject. A minimum now raises the quality, up to full colour detail, until the photo reaches it.
  • "Preserve metadata" could push a file over its limit. The metadata's bytes now count toward the size.
fixedID Photo Maker — official sizes, and a result that shows what it checkedOpen ID Photo Maker

ID Photo Maker now takes each document's size and file rules from the authority's own page, and the result says exactly which rules it checked and which it did not.

Improvements

  • India and UK passports at the published sizes: an Indian passport photo is now 630 × 810 pixels, as passportindia.gov.in requires, saved as a JPEG under the 250 KB that applications through Indian missions abroad allow. A UK passport photo is now 630 × 810 pixels, above GOV.UK's 600 × 750 minimum, and is encoded to land between 50 KB and 10 MB.
  • The result shows what it checked: the result checks pixels, file size and format against the official page, links that page with the date it was checked, and lists what it does not check: head size, expression, lighting and background evenness. Documents with no official file rules on file say so.
  • Photos print at their true size: the print sheet places each copy at the document's size in millimetres, so an Indian passport photo prints at 35 × 45 mm on a 4×6 in sheet.
  • Crop only where the rules say so: Indian, South Korean, New Zealand and Australian passport photos join the US, UK and Canada in being cropped and resized only, with no background edits unless you choose them. The result then marks the photo as edited.
  • Minimum file sizes met: where a form sets a minimum, such as 50 KB for the UK or the US visa's compression limit, JPEG quality rises until the file meets it, and the result says so if it cannot.
  • Lighter on mobile data: the background-removal model downloads ahead of time only for documents that allow background edits, and never ahead of time with Data Saver on. Crop-only documents fetch it only if you choose to replace the background.
  • Clear notices for photographer-only documents: Canada takes only photos from a commercial photographer, and in Germany the photographer or the passport office supplies the photo, so the result says this file can't be used for those applications and offers no print sheet.
  • Japan is crop-only: the Japanese guidelines reject masked or flipped photos, so Japanese passport photos are cropped and resized only.
  • Webcam photos keep their true orientation: a webcam selfie is no longer saved mirrored, and it follows the document's crop-only rule.
addedFive OCR tools: business cards, passports, screenshots, whiteboards, recipes

A batch of everyday tools built on the same on-device OCR stack — your photos and documents never leave the browser.

  • Business Card to vCard: snap a card, get an editable contact, download a .vcf — or scan the on-screen QR with your phone and the contact imports in one tap.
  • Passport MRZ Reader: reads the machine-readable zone of passports and ID cards and recomputes every ICAO check digit, with a per-field valid/invalid badge. Paste or correct the raw MRZ text and it re-validates live. Built local-only because a passport photo is exactly what should never touch a server.
  • Screenshot to CSV: press Ctrl+V on a screenshot of any table and the rows and columns come back as data. Copy tab-separated for Excel/Sheets, fix the odd column with merge/delete controls, or download a CSV.
  • Whiteboard Photo Cleanup: shadows and lighting gradients flattened to a clean white, marker strokes deepened, board auto-cropped — with before/after compare and three strengths.
  • Recipe Scaler: paste a recipe or snap a cookbook page, re-portion to any serving count with kitchen-real rounding (eggs stay whole, cups land on eighths), flip metric/US, and check the substitution table when you're missing an ingredient.
changedID Photo Maker: full rebuild with 156-country catalogueOpen ID Photo Maker

The ID Photo Maker got a ground-up rewrite. It now supports 156 countries with ICAO baseline specs plus 10 government-specific overrides (US, UK, Canada, Australia, India, etc.) so each document type matches its real legal requirement for size, head proportion, and background.

Key changes:

  • New combobox country/document picker — type to filter, no more scrolling through a long list.
  • Background removal moved into a dedicated Web Worker so the UI stays responsive while the AI model runs. Two model choices: a fast 5 MB U-2-Netp for the standard tier and a 115 MB BiRefNet-lite premium model with sharper edges.
  • Jurisdictional AI compliance — US, UK, and Canadian passport flows now skip AI background replacement by default with a clear opt-in warning, because those governments forbid digitally altered backgrounds.
  • Mobile native camera — phones now launch the OS camera app for the best sensor resolution instead of an in-browser camera widget.
  • Multi-size print sheets — drop your photo onto 4×6 in, 9×13 cm, 10×15 cm, or 13×18 cm paper layouts ready to print at any drugstore kiosk.
  • New crop tool with frame-on-photo positioning model, free pan, rotation, and native touch gestures — replaces the prior cropper that had occasional pinch-zoom issues.
  • Passport Photo Maker and Baby Passport Photo also restored as dedicated tools alongside the general ID flow.
2 older entries
Video tools4
removedVideo Format Converter retired after stability issues

Video Format Converter has been pulled. Cross-codec conversions inside the browser's FFmpeg sandbox kept producing intermittent hangs at 30% on MOV, MKV, and AVI inputs, and the fixes were turning into a long tail of edge cases.

The two surviving video tools remain solid:

  • Video Compressor — single-codec re-encode path, verified working.
  • Remove Audio from Video — stream-copy path, no transcoding involved.

Old converter URLs redirect to the video-tools category page so you can see what's still available.

fixedVideo tools fixed silent hang on some hardened browsers

Video tools no longer hang silently in Brave with aggressive shields or some Chrome configurations. The bug: the WASM worker that powers video processing couldn't initialize, but the failure was completely silent — the UI sat at "Compressing… 0%" forever.

Two layers of defense now:

  • 60-second load timeout with an actionable error message that explains the likely cause and suggests Chrome or Edge if you're on a hardened browser. The message tells Brave users specifically to lower Shields for the site.
  • Underlying root cause fixed: the Vite-built worker chunks now serve with the right cross-origin embedder policy so the browser actually allows them to start. Before the fix, Chrome's failure mode was completely silent — no JS exception, just a stuck promise.
fixedVideo tools: progress bar now actually moves during encode

Video tools now show real-time encoding progress instead of freezing at 30%. The encoder was always doing the work — the bar just wasn't updating because nothing was reading FFmpeg's progress output.

Bundled fixes for video processing:

  • Live progress during encode: the bar now reads FFmpeg's per-frame time output and animates smoothly from 30% to 85% (or 80% on the stream-copy path) instead of jumping at the end.
  • Format-aware duration detection: AVI, MKV, and some MOV files that the browser can't read directly now still get a proper progress percentage because FFmpeg's own demuxer reports the duration.
  • Fallback for unknown duration: if duration genuinely can't be determined, the bar steps to mid-range on first activity instead of staying stuck.
  • Full-width progress bar: the bar in the processing card no longer caps at 420px wide, fixing the half-width "is this broken?" look.
  • Clean state per run: each tool invocation now uses a fresh FFmpeg instance, eliminating the bug where running the converter after the compressor would hang at frame 1.
changedMedia tools sharpened: 10 retired, Metronome added, Musicians audience

After a brutal-honest competitive review against iOS Photos, Google Photos, CapCut, native screen recorders, ElevenLabs, ezgif, and Loom, the media catalogue was trimmed and repositioned. The remaining video and audio tools now lean into the moats they actually have — laptop-only, no-install, no-account — instead of competing with apps people already have on their phones.

  • Retired (10 tools) — video-trimmer, video-rotate, video-speed-changer, video-merge, screen-recorder, voice-recorder, text-to-speech, gif-maker, webcam-recorder, and bpm-analyzer. Each lost to a free incumbent (iOS Control Center, Android 11+, macOS Cmd+Shift+5, ezgif, Loom free, Mixed In Key) with no realistic polish path to dethrone.
  • Repositioned — video-compressor and video-format-converter drop their generic SEO and lean into the specific painful jobs: compress on a laptop without installing CapCut or Handbrake, get a Discord/Slack/email-friendly file size, convert the MOV / MKV / AVI formats that phone editors treat as edge cases. New URL aliases for common conversions (mov-to-mp4, mkv-to-mp4, avi-to-mp4).
  • New tool: Metronome — a Web Audio metronome with tap-tempo, accents, subdivisions, visual beat indicator, BPM 30-300, and time signatures from 2/4 to 7/8. Lookahead-scheduled for ~5 ms accuracy. Lives at /tools/media-tools/metronome.
  • New audience: Musicians — /for/musicians curates audio-pitch-changer, tone-generator, metronome, audio-trimmer, and audio-speed-changer for practice and learning workflows.
Developer tools (legacy)21
removedNine tools retired

Nine tools have left the catalog. Eight did a job a chat assistant now finishes in one request: generating UUIDs, hashing text, converting CSV to JSON, working out one subnet, picking a color, pulling a palette from an image, reading a table from a screenshot, and scaling a recipe. The ninth, Warranty Tracker, saw almost no use. The catalog now centers on the files and calculations an assistant cannot handle for you.

What changed:

  • Old links still work: each retired page, its history page, and its alternate URLs redirect to the closest live page.
  • CSV to JSON now lands on the Log Query Workbench, which opens CSV files and exports JSON with SQL in between.
  • IP Subnet Calculator now lands on the Subnet Planner, which lays out a full VLSM plan with overlap checks.
  • Warranty Tracker now lands on the Receipt Scanner, which files the merchant, date, and total of each receipt into a ledger you can export as CSV.
  • UUID Generator and Hash Generator land on the Dev Tools page, Color Picker, Color Palette Extractor, and Screenshot to CSV on the Image Tools page, and Recipe Scaler on the Cooking page.
  • Update, 2026-10-08: the Dev Tools category has since been retired as well, so the CSV to JSON, IP Subnet Calculator, UUID Generator, and Hash Generator links now land on the Network & Sysadmin page.
changedDXF viewer now renders real drawings — text, dimensions, hatches, paper layoutsOpen DXF Viewer

The DXF viewer used to draw only outlines — now it renders the whole drawing. Open an AutoCAD .dxf and you'll see the text, dimensions, filled hatches, smooth curves, and even the laid-out paper sheet — all locally in your browser, no upload, no Autodesk account, no installer. Before this, a real architectural or mechanical drawing came through as a skeleton of lines with the labels, dimensions, and fills silently missing.

What's new

  • Text & dimensions: titles, room labels, callouts, and dimension lines now render — the annotations that make a drawing readable instead of a wireframe.
  • Hatch fills: walls, floors, and section poché show as filled regions, so floor plans and sections look like floor plans and sections.
  • Paper layouts: a Model / Paper toggle appears when a file has both. Paper view renders the title block and the scaled drawing views (viewports) inside it — the sheet the way it was laid out for printing.
  • SVG export: save the drawing as a scalable vector file, alongside the existing PNG and PDF export.

Improvements

  • Smooth curves: splines now render as true curves instead of jagged straight-line approximations.
  • Every layer listed: the layer panel shows all layers declared in the file (matching AutoCAD), not just the ones that happened to carry visible geometry.
  • Nothing dropped silently: if the viewer can't render a particular entity, it now tells you with a notice — so you're never misled into thinking a drawing loaded fully when part of it didn't.

Bug fixes

  • Fixed drag-to-pan, which could select the drawing or flash the file drop zone instead of panning.
  • Fixed text that could render upside-down.

As always: the file never leaves your device.

addedLog Query Workbench — SQL on your logs, locally

Drop a CSV, JSON, NDJSON, or Parquet log and query it with real SQL — joins, window functions, percentiles, the lot — entirely in your browser. The engine is DuckDB compiled to WebAssembly, so your logs and queries never leave your device. It's the "let me slice this file right now without uploading it to a SaaS" tool.

What's new

  • Log Query Workbench: a full SQL workbench for log and tabular data. Query files locally, with results in a virtual-scrolled grid built for large result sets.
  • One-click analyses: it detects log columns (ip, status, latency, path, timestamp) and generates the SQL for top talkers, status-class-over-time, 4xx/5xx error spikes, slowest endpoints (p95/p99), request volume by hour, and an auth-failure timeline. The generated SQL drops into the editor so you can tweak it.
  • Schema browser: every loaded file shows up with auto-detected column types and row counts; click a table to start a query.
  • Export anywhere: send query results out as CSV, JSON, or Parquet.
  • Agent-callable: window.loft.tools.invoke('log-query-workbench', { file, sql }) runs a query headlessly over a dropped file.

Nothing uploads — open DevTools' Network tab and watch your data stay put. The DuckDB engine downloads once from a CDN on first use, then runs offline.

addedSubnet Planner — plan your IP space, visually

A real subnet planner, not just a calculator: enter a parent block and the subnet sizes you need and it lays out an optimal VLSM allocation, draws a visual map of your address space, flags overlaps, and finds the next free block of any size. The plan is a file you own — no NetBox install, no server, no account, nothing uploaded.

What's new

  • Subnet Planner: VLSM allocation, a visual address-space map (colored by status), overlap/conflict detection across the whole plan, and a free-space finder.
  • Allocation tracker: name each subnet and tag it with VLAN, site, and status; the plan persists locally and exports as JSON or CSV (which NetBox/phpIPAM can ingest).
  • Built-in tools: a CIDR calculator (network, broadcast, range, mask ⇄ wildcard, usable hosts), supernet aggregation, and IPv6 expand/compress.
  • Import: load a CSV or JSON plan to pick up where you left off — round-trips with the spreadsheets you already use.

It's a planner and record-of-truth, not a live discovery tool (a browser can't ping-sweep or query SNMP) — import is how the current reality gets in. Everything runs in your browser.

addedAngle measure mode in CAD viewers

A new angle measure mode landed in the CAD viewer family. Click three points to get the angle between two edges — a standard CAD-review need that complements the existing distance and point measure modes. Available via the toolbar tool group and the Cmd-K command palette.

16 older entries
Privacy + security5
addedEVTX Explorer — triage Windows event logs in your browserOpen EVTX Explorer

Drop a Windows .evtx event log and triage it entirely in your browser — SIGMA detections, logon-session reconstruction, an Event ID + MITRE knowledge base, and faceted filtering. The log, full of internal hostnames and indicators, never leaves your device. A Rust-to-WebAssembly engine does the parsing locally.

What's new

  • EVTX Explorer: parse and triage Windows Event Logs (Security, System, Sysmon, PowerShell, custom channels) in the browser, with the records list on top and full per-record detail below.
  • SIGMA detections: bundled rules (log clearing, service installs, PsExec, recon, scheduled tasks, privileged-group changes) plus a failed-logon-burst heuristic flag suspicious events with severity and MITRE ATT&CK technique — and you can paste your own SIGMA rule.
  • Logon-session reconstruction: 4624/4634/4647 paired into sessions with logon type, account, source IP, and duration.
  • Event ID knowledge base: common security IDs annotated with what they mean and why they matter, shown inline.
  • Faceted triage: filter by Event ID, level, provider, and channel, plus full-text search; export filtered events or detections to JSON.

Triage, not an EDR — it finds known patterns in a log you already have, with no upload and no setup. Built on the open-source omerbenamram/evtx parser; thanks to that project.

addedIdentity Inspector — decode certs, JWTs, SAML & OIDC locally

Paste a certificate, JWT, SAML response, or OIDC discovery document and decode it entirely in your browser. The artifacts a sysadmin debugs all day — full of emails, roles, tenant IDs, and sometimes key material — never leave your device. Open DevTools' Network tab and watch: nothing is uploaded.

What's new

  • Identity Inspector: a four-in-one decoder for X.509 certificates, JWT/JWS tokens, SAML messages, and OIDC discovery documents, with problems flagged inline.
  • Certificates: subject, issuer, validity with an expiry countdown, SANs, key usage, fingerprints (SHA-1/256), CSR decoding, multi-cert chain ordering, and an expiry dashboard.
  • JWT: pretty-printed claims with an iat/nbf/exp timeline and human countdowns, plus optional signature verification against a public key or JWKS — never a server secret.
  • SAML: inflates and pretty-prints AuthnRequests and Responses, extracts the assertion (NameID, conditions, audience, attributes), and flags clock skew and audience mismatch.
  • OIDC: renders endpoints, scopes, claims, grant types, and signing algorithms from a .well-known/openid-configuration document.

Why not jwt.io or an online SSL decoder? Those send your token or certificate to a vendor's server. This does the same decoding locally — the privacy is the point.

Update, 2026-10-14: Identity Inspector has been retired. Its links now land on the Security page.

addedMFA Vault — your 2FA, encrypted on your device

A passphrase-locked vault for the MFA sprawl that password managers don't handle well: TOTP/2FA seeds, backup codes, which method is on which account, and break-glass procedures. Your key is derived with Argon2id and everything is encrypted with AES-256 in your browser — the vault is a file you own, and nothing ever syncs to a server.

What's new

  • MFA Vault: a client-side-encrypted store for TOTP/HOTP seeds with live codes and a 30-second ring, locked behind an Argon2id + AES-256 passphrase that's never stored.
  • Import your existing 2FA: from otpauth:// URIs, QR-code screenshots, or a full Google Authenticator export (otpauth-migration) — all accounts at once.
  • Export: copy an entry as a URI or QR to re-scan elsewhere, and back up the whole encrypted vault as a file.
  • Recovery code locker: store the one-time backup codes per account and tick them off as you use them, with a low-codes warning.
  • MFA inventory + account map: record which methods each account uses and which identity (personal, admin, service, root) is used where — the sprawl picture nobody writes down.
  • Break-glass runbooks: per-system recovery steps, encrypted alongside the secrets.

Auto-locks after idle. The trust model is the product: your passphrase is unrecoverable, the vault file is yours, and a browser tab is not a hardware key — for the highest-value accounts, pair this with a security key.

fixedPWA security hardening — OCR model allowlist, beacon SRI, no opaque fallback

Three security fixes in the PWA service-worker path.

  • OCR model precache is now origin-allowlisted. The pre-cache OCR model handler used to accept any HTTPS URL, which meant a same-origin script could coerce the service worker into fetching arbitrary blobs into the OCR cache (poisoning + bandwidth abuse). The allowlist covers jsDelivr, media.github, raw.github, and the canonical Tesseract data host.
  • Analytics beacon requires integrity hash. The third-party analytics beacon used to ship without an SRI integrity attribute — any CDN compromise would have injected arbitrary JS into our origin. The beacon now requires both a token AND an integrity hash env var; without the hash the beacon is suppressed entirely.
  • Dropped the opaque CORS fallback in OCR precache. Opaque responses can't be integrity-checked or size-counted, and would let a CORS-stripping man-in-the-middle attacker poison the cache. The fallback was speculative — jsDelivr and githubusercontent both serve CORS by default.

Plus a correctness fix: the OCR language regex now accepts underscores, so chi_sim and chi_tra (simplified and traditional Chinese) no longer silently fail validation.

changedPre-launch security hardening across the whole site

A multi-pass security review tightened every tool that touches files, passwords, or HTML on this site. Highlights users will notice:

  • Encryption upgraded. File Encryption and Secure Note Sharing now derive keys using 600,000 PBKDF2 iterations (the current OWASP recommendation, up from 100,000). Existing encrypted files and shared notes remain readable — only new ones use the stronger settings. File Encryption bundles now also bind metadata into the encryption tag, so tampering with a bundle's filename or salt invalidates decryption instead of failing silently.
  • Unlock PDF refuses partial unlocks. Previously, a file that only partially decrypted could come out the other side looking unlocked but still mixed encrypted streams. The tool now refuses to write a half-broken PDF and tells you why.
  • Redact PDF is now truly permanent. The standalone Redact PDF tool was only painting black rectangles on top of the original text. It now matches the PDF Editor's behaviour: redacted pages are rasterised into a flat image so the original glyphs cannot be recovered. The tool's labels and warnings were updated to honestly describe what happens.
  • HTML to PDF and Markdown to HTML can no longer execute pasted scripts. Both tools now route pasted content through a strict sanitizer before rendering, so a malicious paste can't reach your saved files, your encryption passwords, or other tools' state.
  • Gerber Viewer rejects decompression bombs. Tar.gz / zip archives that claim to be small but expand into gigabytes are aborted before they can crash your browser tab. The same protection was added to the File Encryption bundle loader.
  • Image to Favicon now tries the site's own /favicon.ico first before falling back to Google's favicon service, and tells you on screen which path was used. Honest disclosure that the domain you type can, in some cases, be sent to Google.
  • Phosphor icons are now bundled instead of loaded from a third-party CDN, so a compromise of an external host cannot affect future visits.
  • Site-wide HTTPS hardening (HSTS preload, tighter Content-Security-Policy, JSON-LD escaping). No visible change for normal use; it just closes injection paths.
Cooking + craft6
changedFermentation Atlas: hundreds more ferments in full depthOpen Fermentation Atlas

Many more Fermentation Atlas pages now read like a full encyclopedia entry: every step reviewed by hand, every number traced to the specification, standard or study that gives it, and the microbes split into those that do the work, those that come along, and the hazards to watch.

What's new

  • Hundreds of new ferments with their own page: protected cheeses from their official production rules (Pecorino Sardo and Toscano, Mahón, Roncal, Raclette de Savoie, Vacherin Mont-d'Or, Wensleydale and many more), Japanese and Chinese soy sauces, regional misos, fish pastes, fermented milks, traditional beers and wines, vinegars, and the wine and starter recipes of the 6th-century Qimin Yaoshu.
  • Historical drinks, clearly labelled: Columella's Roman mead, the drinks of the Arthashastra, medieval gruit ale and Sumerian beer are written from their texts and the archaeology, and say plainly what is reconstruction.

Improvements

  • Fuller pages for ferments already in the atlas: hundreds of existing pages now carry a summary, how each one differs from its neighbours, ingredients with amounts where a source gives them, related ferments, and microbes split by role.
  • Numbers from the source that sets them: times, temperatures, salt and pH now come from the regional or national specification wherever one exists, with tasters' and producer notes labelled as reported. Where two sources disagree, the page shows both.
  • Honest gaps: where no study or specification gives a number, the page says so instead of estimating, and the ferment stays listed on its hub page with what is known.
changedFermentation Atlas: cured sausages, dark teas, misos and kimchi in full depthOpen Fermentation Atlas

Hundreds more Fermentation Atlas entries now have a full page, with each step's time, temperature, salt and pH traced to the specification, standard or study that gives it.

What's new

  • Dry-cured sausages from their official rules: Italian salami (Felino, Cremona, Brianza, Varzi, Piacentino, Piemonte), Spanish chorizos and sobrassada, Slavonian and Baranja kulen, Hungarian winter salami, Bulgarian sudzhuk, Slovenian and Czech specialities, and French saucissons, with drying and ripening tables from each protected-name specification.
  • Post-fermented and oxidised teas: Fu brick tea and its golden Eurotium mould, Liu Bao, Ya'an Tibetan tea, raw pu-erh, the Japanese lactic teas Awa bancha and Batabata-cha, and a page on which teas are fermented by microbes and which are only oxidised by the leaf's own enzymes.
  • Soy, roots and vegetables: regional misos and douchi, furu and Okinawan tofuyo, Nigerian iru, cassava and enset ferments from West Africa, Ethiopia and Indonesia, Pacific pit ferments, and many Korean kimchi variants.

Improvements

  • French cheeses from the current rules: Comté, Roquefort, Reblochon, Saint-Nectaire and other French protected cheeses now follow the specification in force, as published by the agriculture ministry and the EU. Comté, for example, now shows its cooking range of 53–57 °C.
  • Clearer labels on every number: a figure set by a specification is marked as set, a recipe or a study's chosen condition as reported, and a lab result as measured. Patents are no longer treated as specifications.
  • Honest boundaries: black garlic, Koporye tea and processed jellyfish say plainly what changes them, whether a Maillard reaction, the leaf's own enzymes or a salt cure, rather than calling them microbial ferments.
addedFermentation AtlasOpen Fermentation Atlas

A new reference for fermented foods and drinks: nearly three thousand ferments from every continent, with more than a thousand shown step by step from their sources, and each step drawn so you can watch it ferment.

What it does

  • Every ferment we could find: fermented milks and cheeses, vegetables and fruit, tea leaf, soy and legume pastes, fish and meat, breads and batters, roots, starters, vinegars, and alcoholic and soft drinks, from yogurt and kimchi to lahpet, fish sauce, pulque and palm wine. Search by name, local name, ingredient or place.
  • Browse by kind and by place: hub pages for each kind of ferment, each cheese family, each world region and each country with ten or more ferments, with a table that compares time, temperature, salt and pH across them.
  • A recipe and a method side by side: what goes in, with amounts when a source gives them, and every step with its time, temperature, salt and acidity. The first lines of each page answer how it is made, with the key numbers and who reports them.
  • A scene for each step: drag the bar or press Play to step through the process. Each scene shows the one thing that changes, such as salt moving into a cabbage leaf, curd draining in its mould, or starch turning to sugar and alcohol in a rice mash. A lens names the microbes the sources describe.
  • Labels on every number: each value says how it is known, whether measured in a study, set by a specification or tested recipe, reported by one source, or typical, and links to its source. Gaps say "not documented" instead of guessing.
  • Sourced from the specifications: protected cheeses, wines and cured meats follow their official production rules, and other ferments follow peer-reviewed studies, national standards and government recipes. Every citation is checked to exist, and samples of values are checked against their sources by hand.
  • Families and variants: hundreds of cheeses follow their family's make steps and list only what differs, such as the milk, ripening time, rind and size.
changedCanCraft — acid P-values, a 2-D field solver, and per-defect diagrams

A round of depth and polish on the CanCraft thermal-process cockpit, widening who it serves and how much you can trust the numbers.

  • Acid foods get a real answer: acid / acidified products (pickles, tomatoes, acidified packs) now show a delivered boiling-water pasteurization value (P) against the spoilage target — not a "not applicable" shrug. Only truly water-activity-controlled products (jams) stay out of scope, with the survivor chart replaced by a plain explanation
  • 2-D finite-difference field solver: an independent, axisymmetric finite-difference conduction model computes the cold-spot curve and cross-checks the Ball-formula number — so you can see how much your heat-penetration assumption is doing, with the cold-spot location reported
  • A diagram for every defect: the troubleshooter now draws a labeled can silhouette deformed to match — domed ends for swells, a caved wall for panelling, a peak, a seam leak path, rust pitting, the flat-sour "sour, no gas" marker — consistent across all eleven defects
  • Deviation overlay: paste a measured cold-spot trace and it's plotted against the scheduled curve, so you see where the run diverged — not just the delivered-F₀ number
  • Touch + accessibility: teaching now responds to a tap, not only hover; charts carry their numbers in their labels; status is announced, not colour-only
  • Saved scenarios persist across reloads

Everything runs in your browser. Planning and education only — not a filed scheduled process. Validate with a process authority and a real heat-penetration study.

addedCanning Calculator becomes CanCraft — a real thermal-processing workbenchOpen Canning Calculator

The thin canning calculator is now CanCraft, a six-stop workstation that does actual cannery math — not just jars and altitude. Define a product, design the container, pick a retort, and watch the cold-spot temperature curve and sterilizing value (F₀) update live as you tune. Everything runs in your browser; nothing leaves your device.

What's new

  • Product & organism setup: pH and water-activity classify the food (low-acid vs acidified) and set the target organism, kinetics, and F₀ floor automatically.
  • Container designer: round or rectangular cans with size-code ↔ inch ↔ mm round-trips, plus buckle and panel pressure limits derived from the geometry.
  • Retort systems: eight industrial setups — still steam, water immersion, water spray, steam/air, agitating (end-over-end and axial reel), continuous cooker-cooler, and hydrostatic. Rotation actually speeds the heating curve; each medium carries its own overpressure requirement.
  • Live thermal simulator: cold-spot curve with the lethal-rate fill, a play/scrub transport, per-stage F₀ breakdown, and a one-click "solve the minimum hold for my target F₀."
  • Pressure analysis: peak internal pressure, wall differential vs the buckle/panel limit, hoop stress, and the cooling overpressure ramp that prevents buckling.
  • Double-seam teardown: enter the seam dimensions and get overlap %, body-hook butting, free space, and a scaled cross-section drawing with a pass/fail against the can-size spec.
  • Defect troubleshooter: pick a symptom (swell, buckle, flat-sour, leaker…) and get ranked probable causes, the confirming test, the remedy, and a deep link to the input that fixes it.
  • Heat-penetration CSV import: drop a thermocouple log and CanCraft fits fh/jh for you — works for any container shape because the measured curve already embodies the geometry.
  • Scenarios & sensitivity: save setups, compare them, see which variable moves F₀ the most, and export the schedule as CSV.
  • Reference library: a seventh stop with 360+ primary sources — FDA 21 CFR 113/114, USDA-FSIS, Codex, ISO, IFTPS, NCHFP, ASTM seal-integrity standards, retort-pouch and high-barrier packaging science, and patents — each link checked reachable, filterable, opening in a new tab.

CanCraft is a planning and education tool — it computes lethality and integrity to help you understand a process, and it never substitutes for a qualified process authority or a filed scheduled process.

changedCanCraft — a thermal-process cockpit that teaches

CanCraft was rebuilt around one idea: a canner should leave understanding the thermal-process model — not just reading a number. The engine (F₀, heat penetration, retort systems, pressure, double-seam) stays; everything you see around it now explains itself.

  • A teaching rail: hover or focus any control, chip, or result and a panel explains what it means, why its safe line sits where it does, what moves it, and what fails if you cross it — with the safety-vs-spoilage distinction made explicit
  • Honest verdicts: F₀ is shown against the 12-D floor, never as a bare "safe"; per-stop status turns green only on a genuine pass, not by default
  • No more blow-ups: an acid or water-activity-controlled product now reads "F₀ not applicable" with the reason (a botulinum cook doesn't apply), instead of a nonsensical number
  • Deviation analysis: paste a real cold-spot trace and the general method recomputes the delivered F₀ versus your schedule and the floor — it informs the judgment, it never clears a load
  • Failure as a teacher: the troubleshooter ties each defect to your live numbers, tags it safety / spoilage / quality, and links straight to the input that fixes it
  • Legible charts: every chart has a legend and axis labels and is sized to fit; the container cross-section shows where the cold spot is and why
  • Two honest depths: Learn (guided essentials, everything explained) and Drive (every lever — D/z, fh/jh, seam teardown, pressure, deviation)

Everything runs in your browser. This is planning and education — not a filed scheduled process. Validate with a process authority and a real heat-penetration study.

Loft Tools site43
fixedInstall Loft in one tap — the PWA install path actually works now

Installing Loft as an app used to mean digging through browser menus — the site's Install button only lived on the homepage and could never offer the native one-tap dialog. Fixed end to end.

  • One-tap install on Chromium: on Chrome, Edge, Brave, Opera, and Samsung Internet, clicking Install now fires the browser's native install dialog directly — the same single-click flow as PairDrop or Chrome Remote Desktop. The event is captured at page load on every page, so the fast path is always armed
  • Install button on every page: the header now carries the Install button site-wide (full pill on desktop, icon in the compact header), not just a card on the homepage. It hides itself once you're running the installed app, and on browsers with no install path at all (desktop Firefox) it stays out of your way
  • A real install dialog: the app manifest now ships screenshots, so Chromium shows the app-store-style install sheet with previews instead of the bare mini-prompt
  • Safari / iPhone still covered: where the native prompt doesn't exist, the button opens the per-browser guide — Share → Add to Home Screen on iOS, File → Add to Dock on macOS Safari — with exact, current menu paths
  • Share-an-image fix: sharing an image into the installed app now lands in Bulk Image Resize instead of a dead link

Under the hood the install flow, the service worker, and the manifest were consolidated to a single source of truth, so the installed app always gets the same shortcuts, file handlers, and share targets the site advertises.

addedTool history — every change, on every tool

Every tool now carries its own change history, derived automatically from the build's git log. See exactly how a tool has evolved — when it was last improved, how often, and what changed.

  • Per-tool timeline: each tool page shows when it was last updated, the total number of updates, and its three most recent changes
  • Dedicated history page: a /history route per tool lists every change grouped by date, each tagged with its type (feature, fix, performance, refactor…) and scope
  • Editor tools included: full-bleed editors (PDF Editor, the CAD/mesh viewers, CanCraft) get a History link in their header — same trail, no clutter on the editing surface
  • Honest attribution: a change is credited to a tool only when it touches that tool's own files — shared infrastructure never inflates the count
  • Zero upkeep, retroactive, automatic: history is generated at build time for every current and future tool, reaching back through file renames so nothing is lost when a tool is rebuilt

No hand-written entries to maintain — the history is the commit log, surfaced where it's useful.

addedLocal-first blog + a rebuilt "How it works"

Loft Tools now has a proper place to explain how browser-local tools actually work — and why your files never leave your device. A new blog and a rebuilt explainer page launched together.

What's new

  • The blog is live — a local-first education library covering the tech behind the tools: on-device OCR, browser speech-to-text with Whisper, OPFS (the Origin Private File System), the WASM component model, PDF redaction done right, web color management, and head-to-head comparisons with desktop incumbents. More posts are scheduled through the summer.
  • "How it works" pillar — the explainer page was reworked proof-first: a clearer hero, a table of contents, and diagrams showing the file → in-browser engine → result path with nothing uploaded.
  • Blog in the top nav — reachable from every page, not buried in the footer.

Why it matters

The whole pitch is that PDFs, images, audio, and CAD files are processed in your browser tab — no server, no upload, no account. These pages show the receipts: what runs locally, what that costs in memory, and where the limits are. Every post is structured so search engines and AI assistants can cite it accurately.

changedAbout page — privacy + cross-platform, less grievance

The About page previously spent three paragraphs bashing competing tool sites — "barely disguised ad farms", "actively hostile minefields", "greedy paid tools". That hostile tone undermines the privacy-first brand and reads as bitter rather than principled. The new version leads with privacy and cross-platform reach (PWA, every modern browser, offline-ready after first visit, no install), then explains who built it and how it stays free. The solo-dev voice and the tool-request CTA stay.

A separate copy sweep pruned vague marketing phrases on the homepage and /featured meta — "powerful" replaced with the specific format families being addressed ("PDF, PCB, and 3D software"), "Zero friction" on the About subtitle replaced with the concrete "No accounts, no upload, no tracking." (An attempt to also rewrite the homepage hero h1 and subtitle in the same sweep was reverted later the same day.)

addedDefinitional capsules on every tool

Every tool now ships a 40-60 word answerCapsule — the definitional paragraph rendered between the H1 and the HowTo block, and reused as the WebApplication.description in JSON-LD. Research on AI-generated answers shows ~44% of ChatGPT citations come from the first 30% of a page, so this is the highest-leverage AEO surface a tool page has.

  • Coverage went from 15 to 60 (100%) in this pass.
  • Tone is privacy-moat first, mechanism-specific, no marketing verbs. Examples: Protect PDF leads with the key-derivation happening in your browser (and contrasts that with SaaS uploaders seeing the plaintext); Secure Note Sharing leads with the URL-fragment trick (browsers never transmit fragments, so the encrypted note literally cannot reach a server); Redact PDF leads with the byte-removal vs black-rectangle-overlay distinction.
  • Each capsule is unique in opening structure (action, contrast, mechanism, spec, scenario) — no cookie-cutter "X is a free browser-based Y that…" template.
  • A small scripts/inject-answer-capsule.mjs helper inserts the YAML folded scalar after the existing h1: line; supports --overwrite to replace.
38 older entries
Infrastructure2
changedFaster admin-facing routes via smarter geographic placement

Admin and API routes now run in the same region as their data, eliminating round-trip latency on every authenticated request. This benefits maintenance and tooling workflows, not directly user-visible.

changedProduction launch: 100/100 security score and faster heavy assets

Two big platform changes landed for the production launch.

Heavy WASM and AI model assets now load from our CDN. Cloudflare's 25 MB per-file deploy cap was blocking the bundle (FFmpeg core is 30 MB, the AI runtime is 26 MB). Those plus PaddleOCR models now ship via cdn.lofttools.com, freeing the main bundle while keeping everything browser-side. Tessdata language packs and ONNX models stream on first use.

Mozilla Observatory now scores us at A+ (120/100). We cut inline-script permission from our content security policy, which previously held us at B+. Every inline script and style now ships with a cryptographic hash, so the browser will refuse to run anything we didn't author. Page transitions are temporarily full-reload as a result — we'll bring smoother transitions back via native View Transitions in a follow-up.

A side effect: violation reports now go to a real endpoint instead of silently 404ing, so we'll actually see anything that goes wrong.

General18
fixedSaved work is now checked before it's used — across every tool

Compare PDF was crashing on a saved comparison it had never checked the shape of. That turned out not to be one tool's mistake but one habit, repeated: anything Loft saves on your device — bookmarks, measurements, receipts, documents, pinned tools, saved scenarios — was read back and simply assumed to still look the way it did when it was written. Almost always it does. When it doesn't, the failure landed somewhere else entirely, usually as a blank screen with an internal error on it. Everything Loft reads back is now checked first.

Bug fixes

  • A damaged saved item no longer takes the whole list with it. Your receipts, documents, pinned tools, recent files and saved measurements are read back one at a time and repaired individually. Before, a single damaged entry could throw while the list was being drawn — and because the drawing never finished, every item vanished from the screen even though all the others were perfectly fine. Now the damaged one is repaired where possible and set aside where it isn't, and the rest appear normally.

  • 3D measurements no longer stop a model from opening. Saved area and radius measurements are restored when you reopen the same file. Only some of what they contain was being checked, and the parts that weren't were exactly the parts used to redraw them — so a damaged measurement didn't produce a missing measurement, it produced a file that wouldn't open at all. The measurement is now discarded and the model opens.

  • Saved camera views can't freeze the viewer. A named view stores a camera position, a target and an up direction. Only the position was checked. A view missing either of the other two stopped the camera animation mid-flight, leaving the viewer unresponsive to further clicks with nothing on screen to explain it.

  • A shared Gerber link that's been truncated now just opens the board. View links carry the camera and layer settings in the URL, and only the version number in them was ever checked. A link that got clipped in a chat message or an email — a normal thing to happen to a long URL — failed to open the viewer at all instead of opening it at the default view.

  • Offline tools can no longer be un-cached by a bad read. When refreshing a pinned tool, a damaged record made the refresh look like a first-time pin, which deleted the offline copy that was working fine. Related: a damaged build record could make every tool that uses a WebAssembly engine — the 3D viewers, OCR, the media tools — refuse to load, because the file check they run couldn't read it.

  • Two-factor codes: the right message when something is wrong. A damaged vault reported "wrong passphrase", which for a vault of authentication codes reads as having lost them. It now reports what actually happened.

  • A blocked-storage browser no longer breaks the Gerber viewer. In private browsing and in some embedded contexts, asking for saved settings raises an error rather than returning nothing. One place asked without expecting that, and the viewer failed to render.

Under the hood

The shared helpers that read saved data now require a shape check rather than offering one — the unsafe version no longer compiles — and a build check keeps the pattern from coming back. Reading saved data and reading a file someone sent you are the same problem, and Loft now treats them the same way.

fixedCAD engine: a rounded cap no longer loses its crown

A shape defect that every internal check called healthy — the mesh was watertight, every counter read zero, and a third of the surface was simply not there.

Bug fixes

  • Rounded caps and domes keep their full crown. Where a curved surface has to be cut open along a seam to be flattened for meshing, the engine drew that cut as a straight line. On a flat surface that is correct; on a curved one the true seam bows outward, so the straight version cut inside the real boundary and sliced off a crescent of surface along each side of the seam. The region that was cut away then got covered by long triangles reaching straight across the interior of the shape — nearly 20 mm from where the surface actually is, on a part meshed to a 0.6 mm tolerance. Because the covering triangles still joined up edge to edge, the mesh passed every watertightness and completeness check while visibly missing its crown. The cut now follows the seam's real curvature, using the very same sampling the engine already applied everywhere else — one rule, now applied at the one place that was missing it. The worst affected part went from 1.9% of its volume missing to 0.65%, and the notch cut into the bottom of its sphere is gone.

  • A new internal meter catches this class of defect directly. The failure above was invisible because no measurement existed for it: interior mesh points can be generated, paid for, and then silently discarded when the boundary they were meant to fill turns out to be wrong. The engine now counts those orphaned points, so a surface that quietly loses part of itself reports it instead of passing clean.

Under the hood

The fix is deliberately not a new rule. The engine already knew how to follow a curved seam — one of the two code paths that produce such a seam did it correctly and the other did not, and they now share a single implementation. Watertightness held throughout, and the change costs the test corpus 0.006% more triangles.

fixedCAD engine: threads, coils, tubes and rings — the helical family, closed end to end

A systematic campaign through every way a part can wind, sweep or wrap — machine screws, hex-nut threads, coil springs, torus rings and tube loops — fixing each failure at its root rather than patching symptoms. Six engine releases in this batch.

Bug fixes

  • Machine screws render their threads. A family of screws rendered as smooth cylinders with stray spiral artifacts — the thread simply wasn't there, while every internal check read healthy. The file's own curve data described the thread exactly; the engine was re-deriving it by sampling and losing it. Trimmed thread edges are now recognised as exact sub-sections of their surface's own boundary data — a bit-for-bit identity, immune to the sampling ambiguities that caused the loss. The worst screw went from 436% volume error to 1%.

  • Coil springs and tube loops no longer come through nearly empty. Several helical parts emitted a few hundred triangles where tens of thousands belonged — a 25-turn spring reduced to a sliver. The route that meshes a wall between two rims assumed the wall runs straight between them and chorded straight across all 25 turns. That route now measures the wall's actual turning before accepting it, and hands anything it cannot certify to the general machinery, which meshes it properly. The spring went from 99.5% of its volume missing to within 0.6%.

  • Rings and drums with wound surfaces mesh in the window the file describes. Faces whose parameter space wraps many turns could be filled faithfully — over the wrong region, producing phantom surfaces invisible to every openness check. The meshing window is now elected from the file's own on-face evidence, and hole loops are carried into the same coordinate frame as the boundary they belong to.

  • Curve placement survives awkward authoring. Edges whose 2-D placement data lands in a wrong region mid-computation are now caught by a mid-segment consistency check and healed or honestly refused; edge placements are seeded from the junctions where edges meet, so a wire arrives as one continuous frame.

  • The engine's own quality meters got honest. Volume comparison now declares when it is not applicable — on open sheet bodies, promoted shells and multi-product files — instead of reporting enormous errors on parts whose shape is actually correct. Shell labels claiming closure are verified by computed closure rather than trusted.

The through-line

Nearly every defect in this family had the same structure: mature geometry kernels carry a dedicated method for each of these shapes, and the engine was routing them through general-purpose machinery that cannot express them. Each fix either taught the dedicated route to certify what it accepts, or gave the family the dedicated treatment it needed. Watertightness held or improved throughout, and the whole batch changed test-corpus triangle counts by low single digits.

fixedCAD engine: curved free-form surfaces now hold their roundness everywhere

The close of the coil-spring investigation: a missing accuracy rule in the engine's free-form surface meshing, found by asking how mature geometry kernels decide facet density and discovering ours only applied half the standard.

Bug fixes

  • A curved surface's interior is now held to the same roundness standard as its edges. Mesh accuracy is governed by two rules working together: a distance rule (a facet may not sag more than a set tolerance from the true surface) and an angle rule (adjacent facets may not turn more than a set angle). The engine applied both rules to part edges and to simple surfaces like cylinders and spheres — but sculpted, free-form surfaces got only the distance rule on their interiors. On small tightly-curved features the distance rule alone is far too permissive: the smaller the feature, the sharper the corners it allows, without limit. A coil spring's wire — the same circle the engine was already rendering smoothly where it appears as an edge — came out visibly polygonal across the surface between them. The interior now uses the very same angle limit as the edges, so one piece of geometry gets one answer wherever it appears.

  • When a surface hits its detail budget, it now coarsens gracefully instead of tearing. The interior point budget used to stop mid-construction, keeping whatever had been placed so far — which could leave part of a face dense and part empty. A face that exceeds its budget is now re-meshed slightly coarser as a whole, so the quality degrades evenly and predictably.

  • Detail follows the shape's own structure. Free-form surfaces are built from spans, and the mesh grid now aligns to them, placing density where the surface actually bends rather than by repeated halving. This also means the mesher can choose exactly the right number of divisions instead of the nearest power of two.

The result

The coil spring that started this investigation — which two weeks ago rendered as a solid metal rod — now measures within 2.8% of its exact mathematical volume, with a wire cross-section smoother than the reference kernel produces, at a comparable triangle count. The whole change costs half a percent more triangles across a 400-part test corpus, with no part losing watertightness.

fixedCAD engine: closed ring and tube surfaces no longer come through capped

A correctness fix for imported parts built from free-form surfaces that wrap all the way around — O-rings, seals, gaskets, torus-like rings and tube sweeps.

Bug fixes

  • A ring no longer comes through with half of it filled in solid. Some CAD systems write a surface that closes on itself in a compact "unrolled" form: instead of repeating the whole seam, the file repeats just the first few control points at the end. The engine's test for "does this surface join back up to itself?" only ever compared the very first control row against the very last one, which is right for the other way of writing the same surface and wrong for this one. So a surface that closes to within a millionth of a millimetre was read as an open sheet. Without a seam the engine has no way to know that the two edges of the file's parameter grid are the same physical edge, so one rim of the face got placed on the far side of the grid, the outline crossed itself, and the face was filled flat like a lid instead of curving round as a tube. On the test part exactly half the ring was capped, and the part measured exactly half its true volume.

  • The same surfaces now mesh with sensible, even detail. As a side effect of the missing seam, the affected rims were also being sampled around twelve times more finely than they needed, and neighbouring faces disagreed with each other on how finely. With the seam restored, all four faces of the test ring now agree, and the part meshes to within 0.3% of its exact volume — it was 50% out.

Why this class is hard to catch

A capped ring is watertight. Nothing is torn, nothing is missing, every internal consistency check reads clean — the part is simply the wrong solid, and only a comparison against the true volume or a cut through the part reveals it. That is why the engine's quality gates now include exact-volume and cross-section comparisons against an independent geometry kernel, alongside the structural checks.

13 older entries
Audio and Video4
fixedLive Subtitle Translator — translation starts after Chrome's language downloadOpen Live Subtitle Translator

Subtitles now switch to your language as soon as Chrome finishes its one-time language download, and the graphics message says what to check.

  • Translation after the download: Chrome sometimes finished installing a language pair without telling the page. The banner stayed at "Downloading... 100%" and lines stayed in the spoken language. The tool now checks whether Chrome has the pair, and starts translating once it's ready.
  • Clearer graphics message: when Chrome isn't using a graphics chip, the message now explains how to check that graphics acceleration is on and how to read chrome://gpu when it is.
changedLive Subtitle Translator — Mandarin modelOpen Live Subtitle Translator

Mandarin subtitles now come from a second speech model built for Chinese, and get about half as many characters wrong: about 13 in 100 on read speech, down from 28.

What changed

  • A Mandarin model, downloaded when needed: the first time Mandarin is heard or chosen, the tool offers a 169 MB download. It shows the size and has a Cancel button, and a cut-off download picks up where it stopped. After that it stays on the computer and works offline.
  • Switching is automatic: the main model listens to everything and hands Mandarin to the Mandarin model, so a talk that moves between Mandarin and English keeps the right model for each line. Other languages never wait on it.
  • Translation starts at once: the first translated line of a new language pair used to wait a few seconds while Chrome set up its translator. It now arrives within about a tenth of a second.
  • Norwegian translates: Norwegian lines now reach Chrome's translator.
  • Honest labels: Mandarin is marked rough until its model is on the computer, and the FAQ gives both figures.
changedLive Subtitle Translator — no lost words at the startOpen Live Subtitle Translator

The first words after you share a tab are no longer lost, and subtitle lines start where the voice starts.

  • Listening from Share: the tool now hears the tab from the moment you press Share, and catches up while the speech model opens. Before, the first 1.5 to 2.5 seconds were never heard.
  • Lines start with the voice: each line now starts where its first word is spoken, not at the background sound before it, so exported SRT and VTT times line up better.
  • Clearer on small windows: after a cancelled Mandarin download, the offer shows how much is left, and the original line stays in view on narrow screens.
addedLive Subtitle TranslatorOpen Live Subtitle Translator

New tool: share a Chrome tab, and the speech in it turns into subtitles as it plays, with a translation in your language under each line. A video, a call, a lecture or a live stream all work, and the speech model runs on your computer's graphics chip.

What it does

  • Live subtitles for any tab: the original line appears about a second after the words are spoken (Japanese about two and a half), and the translation lands under it when the sentence ends.
  • 28 spoken languages from one model: it detects which language is talking and offers to lock it once heard. Hindi and Mandarin are marked rough, because the model gets more of those wrong.
  • Honest output: words not yet final are muted, words the model is unsure of are underlined, and nothing appears during silence.
  • A transcript to keep: every line is timed on the capture clock, searchable, and saved as SRT, VTT or plain text, with the original, the translation or both.
  • A floating window: the subtitles can sit in a small window above other windows.

Good to know

  • Desktop Chrome only: Firefox, Safari and phones can't share a tab's sound.
  • One download: the speech model is about 790 MB, checked against its fingerprint, and kept for later visits. After that it works with the network off.
  • Translation uses Chrome's own on-device translator.
CAD & 3D10
addedCircuit Board IdentifierOpen Circuit Board Identifier

New tool: photograph an electronics board, from a TV, a power supply, a radio or a computer, and its markings are read at any angle. Parts get their type, chips get their part number and datasheet search links, and resistor codes and capacitor values are decoded with the working shown.

What it does

  • Markings at any angle: each chip is straightened from the full-size photo and read four ways up, so rotated and upside-down print still reads.
  • Parts by type: a part detector trained on public datasets and our own labelled board photos finds the chips, capacitors, resistors, transistors and the rest, and groups the list by type.
  • Part numbers and short codes: full part numbers come with the maker and datasheet search links. Short SMD codes are looked up in marking tables built from makers' datasheets, with ranked candidates and the datasheet each comes from. A code no table lists says Not identified, with a search for the code as printed.
  • Values decoded: 3-digit, 4-digit, EIA-96 and R-notation resistor codes, printed electrolytic capacitor values, crystal frequencies and date codes.
  • Check against the design: add the board's Gerber, ODB++, IPC-2581 or BOM and placement files, and each designator is matched to its part, with BOM lines that disagree flagged.
  • Export: an annotated full-size photo and a parts table.

How accurate it is

We tested it on photos it never saw:

  • Full part numbers: the right part for 27 of 35 legible chips, about three in four.
  • Short codes: often not identified yet (3 of 19), because most makers' code tables are not in it yet. Those rows say so instead of guessing.
  • Part types: of the parts it found, 24 of 27 chips, 70 of 84 electrolytic capacitors, 82 of 82 resistors and 89 of 165 other parts were typed correctly.
  • Sure answers we could check: every sure answer we could check against a known answer was right. On photos it never saw: 6 part numbers, 2 resistor values and 2 crystal frequencies. On the photos we tuned it on: 23 part numbers, 13 resistor values, 1 capacitor value and 3 crystal frequencies. Sure values with no known answer to check against are not counted here. When it is unsure, a row says Check, Can't read, Can't tell or Not identified.

Good to know

  • Light from the side, no flash: laser-etched markings read best that way, and a close-up reads small parts a whole-board photo can't.
  • One download: about 47 MB on first use (the text reader and the part detector; about 15 MB if another Loft reading tool already has the text reader), kept for later visits. After that it works offline; datasheet search links need a connection.
addedGerber Viewer opens IPC-2581 and ODB++, including rigid-flexOpen Gerber Viewer

Drop an IPC-2581 .xml or an ODB++ .tgz and the Gerber Viewer opens it the way it opens a Gerber bundle — copper, drill, soldermask, silkscreen and the board outline on one canvas, with every existing feature working on it. Flex and rigid-flex boards are read properly, not flattened into a rigid one.

What's new

  • IPC-2581: layer names, sides and functions come from the file's own layer table, so there is no mapping dialog to confirm. Net names come with them, so the netlist panel fills itself — 514 nets on a typical reference board.
  • ODB++: the full job, read from the layer matrix. A four-copper board usually exports twenty-plus layers because ODB++ carries the whole CAD stack, mechanical and assembly sheets included; those are separated from the fabrication layers instead of cluttering the rail.
  • Flex and rigid-flex: coverlay, stiffener and the bend, flex and rigid regions are identified and drawn, with the regions tinted so you can see which part of the board bends without hiding the artwork underneath. The board reports itself as flex or rigid-flex on its own.
  • Custom pad shapes: jobs that define their own pads — odd connector lands, joined 0201 pairs, spark gaps — are read rather than skipped.
  • Blind and buried vias: each drill layer is labelled with the span it drills, so a board with seven of them is readable.
  • Everything else still works: measurement, DRC against the fab presets, layer compare, net tracing, the 3D view, and PNG / SVG / DXF export all run on an imported board with no extra steps.

Fixed

  • Inch boards measured wrong. A board 4 inches across reported 0.16 inches, and min trace, min drill, cursor position and the fab-readiness figures were all off by the same factor. Every file is now converted to one unit as it is read. A bundle whose drill file uses a different unit from its Gerbers now lines up too, instead of dropping the holes in a cluster near the corner.
  • The mm / in toggle changed DRC results. Switching units altered what the design-rule checks were comparing against, which could invent violations on a board that passes or hide real ones. The toggle now changes what you read and nothing else, and a report no longer mixes mils and millimetres in the same list.
  • Pick-and-place files in other units. A CPL exported in mils or inches placed its parts in the wrong spot. The unit is now read from the value, the column heading or the file's own header, whichever states it.

Everything runs in your browser. Your board files never leave your device.

addedManufacturability checks on 3D & CAD viewers — DFM, cost, and difficulty

Open a part in any of the 3D/CAD viewers and it now inspects itself for how hard it is to make — holes, corners, draft, undercuts, wall thickness, plus a process-aware cost and difficulty estimate. A fast first look at manufacturability without opening a CAD seat or a DFM tool.

What it checks

  • Holes and fasteners — deep holes (depth-to-diameter past the drilling limit), countersinks and counterbores, and bolt circles read straight off the geometry with their pitch-circle diameter (PCD).
  • Sharp internal corners — inside corners too tight for a standard end-mill radius, the classic "this can't be milled as drawn" flag.
  • Draft angle — faces with too little draft for molding or casting to release cleanly.
  • Undercuts — pick a pull direction and the viewer finds the regions a mold or a 3-axis tool can't reach. Reported by area, not by raw triangle count, so the number means something.
  • Thin walls — minimum wall thickness, with coincident-face artifacts filtered out so a flat plate no longer reads as 0.00 mm.

Cost and difficulty

  • Process-aware — CNC machining, 3D printing (FDM/SLA), sheet metal, and casting/molding each score the same part differently.
  • Difficulty score 0–100 with the drivers spelled out, so you see why a part is hard, not just that it is.
  • Cost estimate is opt-in — turn it on when you want a number; it stays off by default.

Click a finding to find it

  • Every issue in the panel is clickable — select it and the exact geometry lights up in 3D, so "deep hole" points at which hole.

Works across the whole viewer family

  • Live on all the mesh viewers — STEP, STL, OBJ, PLY, 3MF, and GLB.

For agents

  • Exposed on the in-page agent surface: window.loft.tools gains analyzeDfm and analyzeCost, so an assistant driving the viewer can pull the same manufacturability and cost read-out as a structured result.

It's a fast first look, not a replacement for a full DFM package or a quote from your shop. Everything runs in your browser — the part never leaves your device.

addedCAD viewers — Autodesk-grade measure UX + canonical editor primitives

Big polish pass across the seven CAD viewers. The measure tool stops feeling like a prototype and starts feeling like Onshape; the navigation chrome finally has the standard buttons every desktop CAD user expects; and the editor template that powers all our viewers got the canonical primitives extracted so new tools won't reinvent them.

What's new

  • Top-floating measure rail replaces the right-rail accordion. Mode chips for Distance / Angle / Radius / Area / Bbox, a Straight ↔ Along-surface path toggle, units + precision selectors, an entry-count badge, and Undo / Copy / Clear actions — all in one cursor-aware row that drops over the canvas only when measure mode is on.
  • Inline canvas labels float at each committed measurement's midpoint with a leader line back to the part. Click the label to delete the entry. Labels track the camera in real time as you orbit.
  • Cursor coach chip follows the pointer during a pick. Three lines: what the next click does ("Click 2nd point"), the running provisional value (running distance, or polygon area in area mode), and the keyboard hints ("Backspace = undo · Esc = cancel").
  • Four measurement kinds were two before. Radius picks three points on an arc and draws the circumscribed circle + centre marker. Area picks 3+ polygon vertices; double-click or Enter to commit. Distance + Angle stay.
  • Along-surface (geodesic) mode for distance + area. Samples the segment, raycasts onto the mesh, sums the actual surface walk instead of straight-line distance. Useful for cable-length and seam estimates on STEP / STL parts.
  • In-progress polygon ghost — a dashed cyan outline tracks the polygon you're building, and a pulsing yellow ring appears over the first vertex when you hover close enough to close. No more "where do I click to finish?".
  • Per-snap-type glyphs — the snap badge under the cursor now correctly labels vertex / edge-midpoint / face-centroid targets instead of always saying "vertex". Built from a new half-edge adjacency cache that runs once per file load.

Navigation toolset

  • Pan / Hand tool button on every viewer. Left-drag pans while it's active; right-drag still orbits. Trackpad users no longer have to learn that right-drag pans.
  • Zoom Window marquee. Click the chip, drag a rectangle, and the camera tweens to fit that screen region.
  • Home button captures the framing you saw on first load — so "home" actually returns to your default view, not a generic iso angle.
  • Views popover — every viewer now exposes the 7 standard cube views (front / back / top / bottom / left / right / iso-home) plus 5 saved-bookmark slots with rename / overwrite / clear actions. Saved per-tool, persisted across sessions.
  • Smooth camera tweens on every view jump, bookmark restore, fly-to-feature, cube click, fit-to-selection. Quadratic ease over 300ms. Respects prefers-reduced-motion.
  • Right-click context menu on the canvas. Click a face to select it (flood-fills the connected co-planar region with a translucent overlay), then right-click for Fit to selection / Home / Start measure / Clear selection.

STEP improvements

  • STEP explode view — drag the slider in the Explode popover or hit E to spread an assembly's shells along the Z axis. Same UX as the existing 3MF explode; works on any multi-shell STEP.
  • Section view in box mode no longer renders a stippling z-fight pattern on bbox-aligned faces at default 0/100% bounds.

Display + render controls

  • Background presets — theme, dark, light, gradient. (UI surface lands next; the engine hooks are live.)
  • Lighting presets — studio / outdoor / 3-point / soft. Modulates the three scene lights in place.
  • Render quality slider — low / auto / high. High enables ACES filmic tonemap for PBR-textured GLB / glTF models.

Tree search

  • Search above the assembly tree in STEP / 3MF / OBJ / GLB viewers. Renders only when the tree has more than 5 nodes — simple files stay clean.

Under the hood

The editor template that powers every viewer + editor (PDF Editor, Gerber Viewer, CAD viewers) now ships canonical primitives so future tools won't rebuild them:

  • useEditorHistory — generic event-sourced undo/redo + jump-history hook. PDF Editor + Gerber already migrated.
  • ContextMenu, MeasureRail, MeasureToolbar, MeasureCoach, MeasureCanvasOverlay, PanToolButton, HomeButton, BookmarksMenu, ZoomWindowButton, TreeSearch — drop-in primitives in src/components/editor.
  • measure-math.ts — pure-math kernel (distance / angle / circumscribed circle / polygon area) shared across 2D + 3D viewers.
  • edge-adjacency.ts — half-edge cache with floodFillCoplanarFace powering face selection + per-snap-type glyphs.

Try it on STEP viewer, STL, 3MF, OBJ, PLY, or GLB.

changedCAD viewers — canonical top-bar layout across the family

Every CAD viewer's top bar is now organised the same way. Open one viewer, you know where every button lives in the other seven. Web-first means no hidden popovers — every action stays visible — but grouped so your eye finds the right cluster instantly.

Canonical group order

FILE | MODE | NAV | DISPLAY | ACTIONS | ⌘K

  • FILE — open the file picker.
  • MODE — Measure, Section (the two stateful tools).
  • NAV — Pan, Zoom Window, Fit, Home, Bookmarks (the camera controls; Onshape/Fusion users will feel at home).
  • DISPLAY — Explode, Bbox, axis re-orient — whatever toggles how the geometry is shown.
  • ACTIONS — Screenshot, Share, AR, Compare — one-shot commands.
  • ⌘K — the command palette, always at the far right (matches PDF Editor).

Groups are separated by 1px dividers. The trailing Commands button is pushed to the right edge with a flex spacer, so it sits exactly where Adobe / Affinity / Figma users expect.

Naming fixes

  • "Dims" → "Bbox" everywhere. The old label was ambiguous (dimensions of what?). Bbox tells you it toggles the bounding-box overlay.
  • "PNG" → "Screenshot". We render screenshots as PNG, but the user-facing action is "take a screenshot." The verb belongs on the button, not the file format.

Per-viewer specifics

  • STEP — full 6-group layout including Compare deep-link in ACTIONS.
  • STL — adds a 3D-print group between MODE and NAV: Plate (build-plate ghost) · Printer (profile select) · Drop-to-plate.
  • 3MF — Explode lives in DISPLAY (only meaningful for multi-part files).
  • OBJ — axis re-orient (Y-up ↔ Z-up) in DISPLAY.
  • PLY / GLB — standard 6-group layout.
  • DXF — pared-down 2D layout: no Section/AR/Bookmarks/Explode (none apply to 2D).

Why this matters

Inconsistent toolbars cost users milliseconds on every action. Multiply by a CAD review session that takes 20 minutes and you've burned attention on layout-hunting that should go to the part. Canonical order makes muscle memory transfer between formats — open a STEP today, an OBJ tomorrow, the buttons are in the same place.

The new layout primitives (Divider, TopBarSpacer) live in src/components/editor/primitives/ and are exported from the editor barrel, ready for future tier-1 editor tools (audio, video, RAW).

5 older entries
Finance Tools4
removedChart Overlay Studio retired

Chart Overlay Studio has left the catalog. It drew Fibonacci levels, trend lines, and channels on a chart screenshot. Charting apps and assistants now cover that job well enough that a separate page no longer earns its place.

What changed:

  • Old links still work: /tools/finance-tools/chart-overlay-studio/ and its history page redirect to the Finance category.
  • Finance keeps two tools: the Receipt Scanner reads the merchant, date, and total from a receipt photo into a ledger you can export, and the Warranty Tracker shows what is still covered and sends expiry dates to your calendar.
addedReceipt Scanner & Expense Tracker — unlimited scans, no accountOpen Receipt Scanner & Expense Tracker

Scan a receipt with your camera or drop a photo, and a running expense ledger builds itself — entirely in your browser. Every competitor caps free scans behind an account; this one is unlimited because the OCR runs on your device.

  • Camera or photo in, ledger entry out: on-device OCR reads merchant, date, tax, tip, and total; line items come along best-effort. Every field stays editable in a confirm step before it lands.
  • Auto-crop with live outline: the page outline is detected on the camera preview in real time, then perspective-corrected — a tilted phone shot comes out scanner-flat. Missed crop? Drag the four corners and re-read.
  • Month-grouped ledger: search by merchant, note, or item; filter by category; month totals at a glance.
  • Your data, portable: CSV for spreadsheets, JSON, or a full ZIP backup with the original receipt photos. On phones, the share sheet sends a backup straight to Drive or iCloud; on desktop Chrome, point a backup folder at your synced drive once and forget it.
  • 21 OCR languages, model downloaded once and cached for offline scanning.
addedWarranty & Expiry Tracker — your calendar does the reminding

Stop discovering warranties two weeks after they expired. Scan the receipt, set the coverage length, and the expiry lands in your own calendar.

  • Scan the receipt: store and purchase date pre-fill from the photo; you name the product and tap a coverage preset (1/2/3/5 years or custom months).
  • Proper month math: a one-month warranty bought January 31 ends the last day of February — not March 3.
  • Reminders without an account: each expiry exports as a standard .ics calendar event; Google Calendar, Apple Calendar, and Outlook all import it and do the notifying. One file can carry every warranty you track.
  • Expired / expiring / active at a glance with days-left chips, plus search by item, store, or serial.
  • CSV and ZIP backup (with the receipt photos) keep the list portable between devices.
addedChart Overlay Studio — draw price-accurate TA on any chart image

First tool in the relaunched Finance category. Paste a screenshot of any chart — from a broker app, a paywalled terminal, or a message — calibrate its price axis once, and draw professional technical-analysis tools right on top. No incumbent lets you draw on a chart you don't own; this one runs entirely in your browser, so the image never leaves your device.

Bring your own chart

  • Paste, drop, or open any chart image. Paste works the way it does in every AI dropbox — Win+Shift+S then Ctrl+V drops a screenshot straight onto the canvas, no saving the file first.
  • PNG, JPG, WebP, AVIF, GIF, BMP — anything your browser can decode. Screenshots from the Snipping Tool, broker apps, and phones all work.
  • Pan and zoom the image — scroll to zoom to the cursor, hold Space (or the Pan tool) to drag.

Detect and trace automatically

  • One click reads the whole chart. Auto-detect finds the plot area, traces the price series, and reads the axis — then drops Fibonacci levels, a trend line, and support/resistance for you to refine.
  • Line, candlestick, and OHLC bar charts are all reconstructed from the image. Candles rebuild open/high/low/close from the red/green bodies; bar charts are read from their tick stems.
  • Any colour, any background. Detection works in grayscale contrast — the same approach behind Compare PDF — so a green area line, a blue monochrome candle, or a dark line on white all trace the same, on light or dark themes.
  • Magnet snap pulls your cursor onto the nearest line while drawing, so points land exactly on the data.

Calibrate the price axis

  • Two-point calibration: click two points whose prices you know, type each value, and every drawing on the chart reports true prices.
  • Auto-snap (OCR): reads the price-axis labels for you with the built-in PaddleOCR engine and pre-fills the calibration — runs entirely on your device, loaded only when you ask for it.
  • Linear or logarithmic price scales, detected automatically by Auto-snap and switchable by hand.

Draw the tools that matter

  • Fibonacci retracements and extensions, with each level labelled at its real price.
  • Trend lines, rays, and parallel channels.
  • Andrew's pitchfork from three pivots.
  • Support/resistance zones and horizontal price lines with live price labels.
  • Text notes. Every drawing is selectable, draggable by its handles, and editable — color, width, dashed — from the inspector.

Read the numbers behind the line

  • Quant readout on the traced series: returns, volatility, and maximum drawdown computed straight from the points the tool reconstructed.
  • Regime and structure: a trend-vs-mean-reverting estimate plus automatic jump and change-point markers on the chart.
  • Monte Carlo cone projects a band of plausible forward paths from the traced volatility, with the odds of touching a level you pick.
  • KDE support/resistance surfaces the price zones the series clustered around. It's descriptive analysis of the pixels you traced — not financial advice.

Save your work

  • Export the annotated chart as a PNG, with or without the underlying image.
  • Save and reload a project as JSON to keep editing later.

Lives at /tools/finance-tools/chart-overlay-studio. Everything — image decode, calibration, OCR, and export — runs locally; nothing is uploaded.

Network & Sysadmin4
addedDrop — send files between your own devicesOpen Drop

Move a file, your clipboard, or a snippet straight from one of your devices to another — phone to laptop and back — with no app, no account, and no upload.

  • Direct device-to-device: a WebRTC DataChannel connects your two devices in the browser. The bytes flow straight from one to the other — there is no server in the path, no relay, and nothing is stored
  • Four things to send: a file, clipboard text, a clipboard image, or a typed snippet
  • Scan to pair: one device shows a QR code, the other scans it (with a paste-the-code fallback when there's no camera) — no sign-in, no 6-digit accounts
  • Encrypted and verified: the channel is encrypted on the wire (WebRTC DTLS), and every transfer is integrity-checked on arrival, so a dropped connection fails clearly instead of handing you a corrupt file
  • Same Wi-Fi by default: connects over your local network as a direct hop; an optional toggle pairs across the internet when the two devices aren't on the same network
  • Honest about limits: because there's no relay, networks behind strict firewalls (some corporate and cellular) can block a direct link — Drop tells you instead of hanging

Everything runs in your browser. Nothing is uploaded, and there is nothing for anyone to host or store on your behalf.

addedPCAP Analyzer — deeper dissection engineOpen PCAP Analyzer

Rebuilt the packet dissection engine around a single-pass framework so the detail tree, packet list, and display filter all read from one clean-room traversal — and added eight more protocols on top of it.

  • New protocols dissected: 802.1Q VLAN + QinQ, SCTP, GRE, IGMP, IPsec ESP & AH, VRRP, and IP-in-IP / 6in4 tunnels — click a packet to see the full field tree
  • First-class everywhere: the new protocols are labeled in the packet list, filterable by name (sctp, gre, …), and grouped in conversations + the protocol hierarchy — not just the detail tree
  • Honest about encryption: ESP and AH surface their clear-text header fields (SPI, sequence) and never pretend to decode the encrypted payload
  • Tunnel-aware: GRE, IP-in-IP, and VLAN recurse into the encapsulated protocol, so a tunnelled packet shows every layer
  • Single-pass spine: link → network → transport → application dissection runs once per packet, replacing five separate parse passes — every new protocol now lands in one place
  • Cleaner foundations: bounds-safe parsing on truncated frames, correct payload bounds on padded Ethernet frames, and content-sniffed TLS/HTTP that win over a port label

Every capture is still parsed entirely in your browser by a Rust → WebAssembly engine — nothing is uploaded.

addedSerial Console — talk to hardware from your browserOpen Serial Console

A privacy-first serial terminal that runs in the browser: plug in a USB-serial or console cable and configure a switch, router, firewall, or embedded board — no PuTTY, no minicom, no driver install, and nothing ever leaves your device. It's the cable-in-your-hand companion to a KVM: first-config of out-of-box gear, embedded/maker boards, and recovery when the network is down.

  • Two transports, zero server: native Web Serial on desktop Chrome/Edge/Opera, and WebUSB on Android Chrome driven by built-in CH340/CH341, CP210x, FTDI, and PL2303 chipset drivers — so an Android phone with a USB-C console cable can configure a switch from the browser
  • Split panes + broadcast: open up to four devices side-by-side and type once to send to all of them — configure a whole rack of switches in one go; a per-device confirm still gates destructive commands, and a broadcast that misses a disconnected device tells you instead of silently dropping it
  • Structured command blocks: with a device profile active, each command and its output is grouped into a block you can copy, re-send, bookmark, or share — something a flat terminal can't do
  • Cross-vendor command library: 160+ real commands across Cisco IOS/NX-OS, Juniper, Arista, Aruba, MikroTik, Ubiquiti, FortiGate, Linux, and Arduino/ESP32 AT — fuzzy-searchable from a command bar or the Cmd/Ctrl+K palette, with vendor badges, destructive commands gated behind a confirm prompt, your own saved macros (import/export as JSON), and command history (↑/↓ recall)
  • Auto-baud + full framing: presets or auto-detect the baud rate, set data bits / parity / stop bits / flow control, switch live while connected
  • Real-terminal niceties: color themes (Dracula, Nord, Solarized, Gruvbox, Catppuccin), scrollback search, clickable links, per-line timestamps, adjustable font size — from a top View menu and a floating toolbar
  • Parse the stream: trigger/highlight rules (regex → color a line, e.g. %ERROR → red), a live value graph (plot numbers out of the stream), and multi-format decode (hex · uint8 · int8 · uint16 · float32)
  • Hex/ASCII decode, live filter, and session recording: export the session to .log / .json / .txt, all from a local ring buffer
  • Mobile-first: on a phone the UI leads with tappable macros, a quick-keys row (Tab, ?, arrows, Ctrl-C, Esc, Enter), a command box with history, and a pane switcher — no fighting a phone keyboard
  • Agent-callable: window.loft.tools.invoke('serial-console', { action: 'searchLibrary', query, vendor }) answers cross-vendor command questions headlessly

Runs 100% on your device — open DevTools and watch the Network tab stay empty. iPhone and iPad are not supported: iOS browsers use WebKit, which has no Web Serial, WebUSB, or Web Bluetooth — use Android or a desktop Chromium browser. The four chipset drivers are clean-room implementations whose register math is verified against an open reference; they're marked community-tested until confirmed on physical hardware (the in-tool Help panel shows each chipset's status).

addedPCAP Analyzer — read captures in your browserOpen PCAP Analyzer

A privacy-first packet-capture analyzer: open a .pcap or .pcapng and inspect it with a Wireshark-style workflow — entirely in your browser. Every other online analyzer uploads your capture to a server; this one never does. First tool in the new Network & Sysadmin category.

  • Clean-room WebAssembly engine: a from-scratch Rust dissection engine (no GPL Wireshark code) compiled to a ~88 KB WASM module — dissects Ethernet, ARP, IPv4/IPv6, ICMP, TCP, UDP, DNS, HTTP, and TLS (handshake + SNI + certificate), with well-known-port labels for DHCP/NTP/SNMP/SSDP/QUIC and more
  • Wireshark-style display filter: ip.addr == 10.0.0.5 && tcp.port == 443, http, dns.qry.name, frame contains "...", with &&/||/!, live validation, and inline errors
  • Three-pane layout: virtual-scrolled packet list (handles ~1M packets), per-packet protocol tree, and a hex view with click-to-highlight byte ranges
  • Analysis tabs: Conversations, Endpoints, Protocol Hierarchy, IO graph, and Expert info (retransmissions, resets, zero-window) — click a row to filter
  • Follow stream: reassemble any TCP/UDP conversation, client and server colored separately, ASCII or hex
  • Export: save the filtered subset back to .pcap, or the packet list to CSV/JSON
  • Agent-callable: window.loft.tools.invoke('pcap-analyzer', { file }) returns a summary, conversations, and endpoints headlessly

Runs 100% in-browser via WebAssembly — your capture never leaves your device. A privacy-first triage analyzer for the common-case protocols, not a full Wireshark replacement (no live capture; TLS application-data decryption is on the roadmap).