[HN Gopher] Show HN: Hyvector - A fast and modern SVG editor
       ___________________________________________________________________
        
       Show HN: Hyvector - A fast and modern SVG editor
        
       I have been working on Hyvector for the last five years and finally
       decided to present the result of my work.  Hyvector is an SVG
       editor that runs in all modern browsers. It is stable, very fast,
       and capable of handling complex SVG images.  Big new features like
       art strokes, vector tracing, colorizing are in the making, but for
       now the focus is on pushing a polished first release out of the
       door.  I would love to hear any feedback on what you like, missing
       features, or any bugs you encounter via our issue tracker:
       https://github.com/hyvectorapp/hyvector-issues  Note that while
       Hyvector should work on a phone, it is much more usable on a
       desktop computer or tablet.
        
       Author : jansan
       Score  : 227 points
       Date   : 2025-05-09 10:45 UTC (12 hours ago)
        
 (HTM) web link (www.hyvector.com)
 (TXT) w3m dump (www.hyvector.com)
        
       | kiney wrote:
       | how does it compare to inkscape?
        
         | anilgulecha wrote:
         | Also, would it bring more to table on the web compared to
         | svgedit?
         | 
         | https://svgedit.netlify.app/editor/index.html
         | 
         | https://github.com/SVG-Edit/svgedit
        
         | jansan wrote:
         | Inkscape has far more features, and Hyvector does not support
         | some SVG features like filters and masks, yet.
         | 
         | But I think Hyvector is easier to use, and this is the main
         | focus. I spent a lot of time on cleaning up the UI, and I still
         | see room for improvement.
         | 
         | Performance is comparable. I am testing with some massive SVGs
         | that have tens of thousands of path nodes, and Inkscape and
         | Hyvector can handle them equally well.
        
       | pveierland wrote:
       | This locked up my system so hard I couldn't recover by killing
       | the browser or reloading the window manager (Firefox 133.0.3 /
       | Sway 1.9). Had to reboot and don't have time to investigate
       | further right now. Appeared to happen while double clicking and
       | dragging around elements a bit rapidly.
        
       | edu wrote:
       | Nice, shows a lot of promise. A quick feedback, placign the
       | floating toolbar at the top is distracting and takes up real-
       | state from the actual drawing. I'd prefer to have a regular
       | toolbar or placing it at the bottom of the canvas.
       | 
       | Edit: or make it moveable/collapsible
        
         | jansan wrote:
         | Thanks, the toolbar has already been redesigned and moved
         | several times. It collapses anyway when the window gets too
         | narrow, so giving it a collapse button should be super easy to
         | do.
        
           | jfindley wrote:
           | Plus one on the floating thing, on desktop it'd be great to
           | be able to move it out of my way but still have it present.
           | 
           | Also, while I assume/hope there are shortcut keys on desktop,
           | I have no idea what there are and if they're documented
           | anywhere I can't find it. If there aren't shortcut keys, it'd
           | be super useful to add them, at least for common actions.
        
       | WillAdams wrote:
       | It's a nice beginning.
       | 
       | Some obvious features which I missed:
       | 
       | - nodes tool should want to snap begin/end nodes together when
       | editing (and the snap distance could be larger when initially
       | creating, esp. w/ the pencil tool)
       | 
       | - rather than a Nodes tool for editing, something like to Wick
       | Editor's Flash/Futurewave Smarksetch pull/push deforming would be
       | much more mobile friendly
       | 
       | - if corner rounding doesn't work on polygons it should be
       | hidden/disabled
        
         | jansan wrote:
         | Thanks, this is the kind of feedback that I was hoping for.
        
       | syntaxfree wrote:
       | What's the story behind the naming?
       | 
       | (I presume it's not written in Hy/Hylang, the cute little Lisp
       | that compiles to Python.)
        
         | jansan wrote:
         | My children came up with it. All the obvious names were taken,
         | so I kept it. I think it has something to do with Minecraft.
        
           | axus wrote:
           | Your project seems to be the opposite of Hytale; only 5 years
           | instead of 10, and you've got a usable, working product
           | without grifting for investor dollars.
        
       | rizky05 wrote:
       | Good job! but somehow the UI looks blurry on mac.
        
       | stared wrote:
       | Thank you for sharing! Does it offer a way to edit relevant
       | pieces of SVG code?
        
         | jansan wrote:
         | No, this is currently not a feature. I wanted to keep a certain
         | level of abstraction to be able to add features that SVG does
         | not support natively. Internally it uses its own object model,
         | which is similar to SVG but in parts different (for example
         | when using clip paths), so giving access to the raw SVG code
         | may be difficult.
        
           | jarek-foksa wrote:
           | If I were to build a web-based vector graphics editor from
           | scratch today, I would make it work internally with a "sane"
           | subset of SVG such as SVG Micro [1].
           | 
           | This way you get a fast and reliable rendering engine for
           | free (including support for MathML and HTML objects), you can
           | easily import third-party SVG assets with a normalizer such
           | as SVGO and you don't need to bother with all the convoluted
           | special cases.
           | 
           | [1] https://github.com/linebender/resvg/blob/main/crates/usvg
           | /do...
        
         | california-og wrote:
         | Check out GodSVG for a promising (still in development) SVG
         | code editor.
         | 
         | https://www.godsvg.com/
        
           | Nekorosu wrote:
           | I was going to post it too. It's lovely!
        
       | ansc wrote:
       | I've been thinking about why there's no modern SVG editor like
       | this. Super nice to see. Inkscape can be a bit of a pain imo,
       | even if it has extensive features. I'll definitely give it a
       | spin. Good luck!
        
         | pphysch wrote:
         | Have you tried https://boxy-svg.com?
        
         | osener wrote:
         | There are a lot of options in this thread already, but I've
         | been using Figma to create and edit SVGs and don't have any
         | complaints so far.
        
       | Gualdrapo wrote:
       | This is what I wish KDE's Karbon was - a friendly but quick and
       | capable SVG editor.
       | 
       | Granted, I wish it somehow could had the functionalities SVG Path
       | Editor[0] has, which I haven't been able to find in any other
       | editor (like, for example, converting absolute `<path>`
       | coordinates to relative, editing each line, curve, and so on for
       | each `<path>`).
       | 
       | Another feature that would be great to have but would require a
       | monumental amount of work, or maybe even be its own project,
       | would be animation.
        
       | cssinate wrote:
       | This looks great! If you're open to feedback, one thing I love is
       | being able to edit the actual SVG properties right inside the app
       | - the CSS, the path nodes, etc.
        
       | artursapek wrote:
       | Nice. I built something like this years ago. SVG is a really fun
       | standard to build stuff around.
        
       | boomskats wrote:
       | I really like the UX of this. Very usable on a Wacom enabled
       | android tablet.
       | 
       | Don't know if your spline editing mechanism (i.e. the ability to
       | drag the line around from an aribtrary point rather than tweaking
       | the individual handles) is something you came up with yourself or
       | borrowed from elsewhere, but I really really like it.
       | 
       | Only thing I noticed is that touch scrolling doesn't work on the
       | tree on the left. Otherwise it's very smooth.
       | 
       | Have you implemented any keyboard shortcuts?
        
         | jansan wrote:
         | Thanks, the curve dragging is surprisingly easy. I think a very
         | old discussion in a Google forum have me the idea how to
         | implement it. It even works with keeping the handle directions
         | (pressing Shift while dragging).
         | 
         | That tree on the left is difficult to get right on all devices.
         | It has to support click, touch to click, drag and drop, swipe
         | scrolling, touch scrolling, etc., and all that while acting as
         | if it holds hundreds of elements. There are still a few issues,
         | for example swipe scrolling and some jankiness on iOS, but I
         | have them on my list.
         | 
         | Keyboard shortcuts are implemented for non-mobile devices. If
         | you open a menu on the menu bar, you can see them at the right
         | in the menu items.
        
           | jdiff wrote:
           | I'd be very interested in that discussion for one of my own
           | projects, any chance you still have a link handy?
        
             | jansan wrote:
             | I was wrong, it was on Stackexchange. Stackexchange is full
             | of true gems, and they really often have no or only very
             | few upvotes, because nobody recognizes their value.
             | 
             | https://math.stackexchange.com/a/952050
        
       | lyu07282 wrote:
       | Looks great! Not meant as a critique but I always thought SVG is
       | the wrong level of abstraction for an editor, I don't really want
       | a SVG editor I want a vector drawing program. Sure it should
       | render to optimized SVG, but a UI/UX built around the SVG
       | concepts like path, clip-path and the like is not very end-user
       | friendly. This always irked me about inkscape anyway.
       | 
       | Also what I always thought would be a real killer feature would
       | be something similar to blender modifiers (array, mirror, etc.)
       | but in a vector editor, allowing for non-destructive editing.
        
         | Karliss wrote:
         | Inkscape LPE is exactly that - non destructive path modifiers.
         | Graphite.rs editor in some ways has even bigger focus on
         | nondestrictive effects.
        
         | jansan wrote:
         | Well, this is actually the idea behind it. There is an internal
         | object model, but currently the mapping from SVG to the
         | internal model is almost 1:1. One first exception is clip
         | paths, which in Hyvector is a path with stroke and fill and a
         | content that is clipped outside that path. In SVG handling of
         | clip paths is quite cumbersome and not very intuitive.
         | 
         | If I can continue developing this other features will follow:
         | Corner rounding of paths, non-destructive boolean operations,
         | variable stroke widths, multiple fills, distortions, etc.
         | 
         | The thing is that I want to keep SVG as the export format,
         | because it it really good for the wbe can be styled with CSS.
         | Therefore effects must be exportable as true SVG (even if
         | composed of multiple SVG elements), not some fake bitmap
         | inserted into an SVG as some other editors do it when exporting
         | SVGs. This for example means that there will be no conic
         | gradients unless they are supported by SVG one day.
        
           | jarek-foksa wrote:
           | > In SVG handling of clip paths is quite cumbersome and not
           | very intuitive.
           | 
           | Modern web browsers now support "clip-path" CSS property with
           | inline/shorthand values which are much more convenient to use
           | than <clipPath> element. There are some examples on MDN [1].
           | I haven't performed extensive tests yet but they seem to be
           | working just fine with SVG objects.
           | 
           | [1] https://developer.mozilla.org/en-US/docs/Web/CSS/clip-
           | path
        
       | throwaway2562 wrote:
       | Looks cool! Very polished, I appreciate just how much effort it
       | takes to get something like this out of the door.
       | 
       | Couple of questions for OP
       | 
       | What is it written in? What will the license be?
       | 
       | Context: Currently evaluating the venerable SVGEdit (MIT,
       | JavaScript) for a project
       | 
       | https://github.com/SVG-Edit/svgedit
        
         | jansan wrote:
         | It is written in plain Javascript using Vue for reactivity. I
         | have not made any decisions regarding the license or
         | monetization, but for now it is just free to use.
        
       | iFire wrote:
       | The first thing that came to mind was my friend's project to do a
       | SVG editor in Godot Engine https://www.godsvg.com/.
       | 
       | I'll write my first impressions of https://github.com/hyvectorapp
       | so it helps usability and improvement.
       | 
       | Oh it's a freemium app.
       | 
       | hyvectorapp starts off looking like figma, penpot style which is
       | a good sign.
       | 
       | I can export svg [x]
       | 
       | There's no align to grid system.
       | 
       | vector tracing is not generally solved except via the vectormagic
       | product and machine learning research prototypes. I wonder how
       | you solved it.
       | 
       | Can't interact more today so I'll end with this note of
       | hopefulness.
        
         | jankovicsandras wrote:
         | Can this solve vector tracing?
         | https://github.com/jankovicsandras/imagetracerjs (Public
         | domain) Discaimer: I made this.
        
           | titaphraz wrote:
           | The inkscape extension link is to a empty page:
           | https://inkscape.org/~MarioVoigt/%E2%98%85imagetracerjs-
           | for-...
        
             | jarek-foksa wrote:
             | "Vectorize" generator in Boxy SVG also uses imagetracerjs
             | under the hood, you can check the online demo here:
             | https://boxy-svg.com/#demo-tracing
             | 
             | I think Inkscape still uses Potrace internally, which is
             | produces a bit better results.
        
           | iFire wrote:
           | The result doesn't match the original svg https://github.com/
           | jankovicsandras/imagetracerjs/blob/master... on an a/b test.
        
       | Karliss wrote:
       | There is no way to join 2 nodes without introducing new edge,
       | unless there is some hidden shortcut. Also the "connect paths"
       | ignores selection and instead randomly picks one of the two ends
       | with matching direction. Even if you know the end direction rule
       | you can't know which of the 2 endpoint pairs will be connected.
       | 
       | I might be slightly biased as I am more used to even/odd infill
       | mode compared to non zero mode, but having user constantly keep
       | track of which paths are clockwise and which are counterclockwise
       | seems like unnecessary hassle, especially for paths without
       | infill where it shouldn't matter. At least there is a UI
       | indicator for it, otherwise I would be very confused.
        
         | jansan wrote:
         | > There is no way to join 2 nodes without introducing new edge,
         | unless there is some hidden shortcut.
         | 
         | Duh, I was not even aware that nodes get connected with a
         | single node replacement in other apps. Somehow I missed that.
         | 
         | > Also the "connect paths" ignores selection and instead
         | randomly picks one of the two ends with matching direction.
         | 
         | It should currently connect by selection order (first selected
         | with first selected on other path), but I may have to rethink
         | this.
         | 
         | Regarding fill rule I am aware that this is missing. Thanks a
         | lot for the valuable feedback.
        
       | whartung wrote:
       | If you're willing, I'd like to ask some questions about your
       | implementation. My email is in my profile.
        
       | jwmcglynn wrote:
       | Very nice! My side project is a C++ SVG rendering library, and I
       | have never been able to find great SVG editors.
       | 
       | I usually fall back to Illustrator and then clean up the
       | resulting markup, or a text-based editor such as
       | https://www.svgviewer.dev/
       | 
       | Your UX is quite polished, and your tool already supports more
       | features than other ones I've found, good work!
       | 
       | For reference this is my project,
       | https://github.com/jwmcglynn/donner, which has a web-based
       | "editor" (currently just code-based editing) prototype here:
       | https://jwmcglynn.github.io/donner-editor/
       | 
       | SVG is one of those things that has lots of potential but has
       | been impacted by not-so-great tooling, it's my passion and I'm
       | glad to see innovation in the space.
        
         | somethingsome wrote:
         | What's the problem with inkscape? It has some bugs, but
         | otherwise it works quite well
        
           | simonbw wrote:
           | Inkscape is a vector editor that can export to SVG, but
           | that's a bit different than an editor specifically for the
           | SVG file type.
           | 
           | I've often found myself wanting to edit SVG code directly
           | while viewing the result. This maybe not the most common
           | approach, but sometimes you want to be be dealing with
           | specifics that relate to the fact that you're working with an
           | actual SVG file, and not just a vector image.
        
             | jcelerier wrote:
             | Isn't inkscape's native data format SVG?
             | 
             | https://inkscape.org/en/develop/about-svg/
             | 
             | > The Inkscape project does not only use SVG as its native
             | file format, it also takes part in the further development
             | and refinement of SVG features by delegating a
             | representative to the W3C SVG Working Group.
        
               | perching_aix wrote:
               | It's more of just their personal classification of the
               | software than anything in my reading.
               | 
               | That said, Inkscape can default to save in SVG, can
               | actively contribute to the SVG standard, but still be /
               | come across as primarily a vector image editor.
        
             | somethingsome wrote:
             | I think you can use the XML editor in the edit menu to
             | directly edit the SVG in inkscape
        
             | Lalo-ATX wrote:
             | for what it's worth, if you click on an element and hit
             | ctrl-shift-x you'll get the underlying svg code and you can
             | edit it directly as you wish
        
           | squidbeak wrote:
           | Inkscape's brilliant, but its niggles aren't trivial. Leaving
           | transforms in the exported svg code has been pissing me off
           | for years.
        
       | Matheus28 wrote:
       | You might wanna look into Skia's pathkit for a lot of path
       | transformations it can do and you could use.
        
       | sandreas wrote:
       | Nice thank you. I often use https://github.com/Yqnn/svg-path-
       | editor, but I'm going to try this one out.
        
       | VoltCraft wrote:
       | checked the generated SVG for clues and was glad to see you have
       | a link to the editor. very nice! https://www.hyvector.com/dtd
        
       | jvidalv wrote:
       | Cool! Can you add support for an MCP API so we can use it within
       | claude?
        
       | herpdyderp wrote:
       | Not a single thing in this works in Safari
        
         | cyanydeez wrote:
         | Apple products are a poor testbed for web apps.
        
           | nicce wrote:
           | Should't be - it has significant marketshare regardless.
           | Especially in art/design area.
        
       | popalchemist wrote:
       | Would be interesting if it were open source. This is not enough
       | to be a product, but it's enough to be a package you could build
       | products with.
        
       | Lalo-ATX wrote:
       | does not work on latest Chrome on Windows (136.0.7103.93)
        
       ___________________________________________________________________
       (page generated 2025-05-09 23:00 UTC)