# svg-path-editor **Repository Path**: mirrors_Yqnn/svg-path-editor ## Basic Information - **Project Name**: svg-path-editor - **Description**: Online editor to create and manipulate SVG paths - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2022-01-10 - **Last Updated**: 2025-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SvgPathEditor Edit or create SVG paths in browser: https://yqnn.github.io/svg-path-editor/ [![Image of Yaktocat](./doc/screenshot.png)](https://yqnn.github.io/svg-path-editor/) ## How to Use ##### Basic: - Paste or edit the raw path in the **path** field - Click on **+** to add a new command to the path, select a type, then click on the destination - Move points with drag and drop - Click on a point, then on the **...** button to insert a command right after the selected one, to remove it, or to change its type ##### Commands panel: - Click on the command type to toggle between relative and absolute coordinates - Relative command types are **orange**, absolute are **purple** - Click on **...** then **Delete** to delete a command - Click on **...** then **Insert after** to insert a new command right after the selected one - Click on **...** then **Convert to** to convert the selected command to a new type - Click on **...** then **Start Path From Here** to reorder the path so that the selected command becomes first ##### ViewBox: - Use mouse wheel, or click **Zoom in** and **Zoom out** to zoom in/out - Use drag & drop to move the viewBox - Click on **Zoom to Fit** to automatically set the viewBox depending on current path - ViewBox can also be set manually with the **x**, **y**, **width** and **height** fields ##### Path operations: - Scale the full path with the **Scale** button - Translate the full path with the **Translate** button - Rotate the full path with the **Rotate** button - Round all coordinates of the current path with the **Round** button - Convert all commands to relative or absolute coordinates with **Convert to relative** or **Convert to absolute** button - Reverse the command order with the *Reverse* button - Minimise the path length with the *Optimize* button ##### Shortcuts: - Press **m**, **l**, **v**, **h**, **c**, **s**, **q**, **t**, **a** or **z** to insert a command after the selected one - Press **shift** + **m**, **l**, **v**, **h**, **c**, **s**, **q**, **t**, **a** or **z** to convert selected command to a new type - Press **echap** to delete the command being created, or the undo the current dragging operation - Press **delete** or **backspace** to delete the selected command - Press **ctrl** + **z** or **cmd** + **z** to undo - Press **ctrl** + **shift** + **z** or **cmd** + **shift** + **z** to redo - Press **ctrl** while dragging to ignore `snap to grid` constraint ## Library The library that powers the app is now available as a standalone package: [`svg-path-editor-lib`](https://www.npmjs.com/package/svg-path-editor-lib). ## Running Locally ### With Node.js ##### Requirements - [Node.js](https://nodejs.org/) v18.13 or higher. ##### Dependencies Run `npm install` to retrieve all the dependencies of the project. ##### Development server Run `npm start` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. ##### Build Run `npm run build` to build the project. The build artifacts will be stored in the `dist/` directory. ##### Running unit tests Run `npm test` to execute the unit tests via [Karma](https://karma-runner.github.io). ## Special Thanks Many thanks to our sponsors 🙇 ! [@riovir](https://github.com/riovir), [@miniBill](https://github.com/miniBill), [@GitHub](https://github.com/GitHub), [@alexandernst](https://github.com/alexandernst), [@Filimoa](https://github.com/Filimoa), [@agrogers](https://github.com/agrogers), [@MilesTails01](https://github.com/MilesTails01), [@robetus](https://github.com/robetus), [@adcar](https://github.com/adcar), [@getsentry](https://github.com/getsentry), [@simplicitywebdesign](https://github.com/simplicitywebdesign) 😎, [@PassPilot](https://github.com/PassPilot), [@zeroin](https://github.com/zeroin), [@jholmes-dev](https://github.com/jholmes-dev), [@sh-csg](https://github.com/sh-csg), [@MarcoRudin](https://github.com/MarcoRudin), [@Oddpod](https://github.com/Oddpod), [@roboflow](https://github.com/roboflow), [@lasaldan](https://github.com/lasaldan), [@stevekerrick](https://github.com/stevekerrick), [@toth-istvan-zoltan](https://github.com/toth-istvan-zoltan), [@PBI-DataVizzle](https://github.com/PBI-DataVizzle), [@gucr](https://github.com/gucr), [@Guiorgy](https://github.com/Guiorgy), [@LeaVerou](https://github.com/LeaVerou)