Zero Width Shortener (ZWS)
Shorten URLs with invisible spaces.
Or, configure your own instance to use any other kinds of characters.


Code Contributors

This project exists thanks to all the people who contribute.
Special thanks to Jaex for integrating ZWS into ShareX.

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]



Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
A status page for the official instance of ZWS is available at



Running an instance of ZWS on Heroku is the easiest way to self-host. You can also stay totally within the free limits of both the web process and the Heroku Postgres database. Note that the Hobby Dev (free) plan of Heroku Postgres has a row limit of 10,000, which might not be enough for your use case. Consider using the API key feature of ZWS to restrict access to your instance.


We provide a template app specification YAML file to allow users to launch an instance on the DigitalOcean App Platform.
  1. 2.
    Copy db.example.env to db.env and fill in the values
  2. 3.
    Copy example.env to .env and update the DATABASE_URL environment variable to match the values in db.env
  3. 4.
    Run docker-compose up -d (this will automatically apply database migrations)

Database migrations

Database migrations are automatically applied on Heroku and Docker Compose. You can easily run database migrations manually through Docker Compose by running the following command:
docker-compose up migration
Make sure the DATABASE_URL environment variable in .env is accurate.
If you are hosting your instance on Heroku, migrations are automatically applied. If you need to manually apply migrations or are only using Heroku for your database you'll need the credentials for your database:
  1. 1.
    Get the Heroku Postgres connection URI from
  2. 2.
    Create a .env file and enter in the connection URI
DATABASE_URL=postgresql://johndoe:[email protected]:5432/mydb?schema=public
Afterward you can run the migration commands shown above.


ZWS instances expose two routes that implement the Shields endpoint schema:
Number of shortened URLs
Number of visited URLs
Last modified 7mo ago