url2svg Roadmap

Phase 1 — Core capture (done)

  • URL → headless Chrome → JS extraction → VisualElement tree → SVG
  • Backgrounds, borders, border-radius, opacity, overflow clipping
  • Text runs with font properties, text decoration
  • Images as embedded data URLs
  • Box shadows
  • Links (href)
  • Full-page scroll capture mode

Phase 2 — Output modes & file size

  • Keep current "full" mode (large, high-fidelity files)
  • New compact default mode
    • Target 1024x800 viewport
    • Downscale / re-encode embedded images (e.g. JPEG quality reduction, resize to rendered dimensions)
    • Strip redundant precision from coordinates (round to 1 decimal)
    • Collapse empty/invisible elements
  • CLI flag: -mode full|compact

Phase 3 — Fidelity improvements

  • Gradients (linear-gradient, radial-gradient backgrounds)
  • Pseudo-elements (::before, ::after)
  • SVG/canvas element passthrough
  • Web font embedding (subset and inline)
  • CSS transforms (translate, rotate, scale)
  • Form controls (inputs, buttons, selects as visual approximations)

Future ideas

  • Streaming / incremental output for large pages
  • Diff mode: capture two URLs and highlight visual differences
  • PDF output via SVG → PDF conversion
  • WASM build for in-browser use (no server-side Chrome needed)