PHP HTML JavaScript CSS Other
Latest commit a243a87 Feb 19, 2018
spammy23 and cydrobolt Sanitised URLs (#420)
Escape special characters in long URLs in DataTables
Failed to load latest commit information.
.github Update Feb 15, 2018
app Sanitised URLs (#420) Feb 20, 2018
bootstrap Use ApiException to handle API errors and use ApiMiddleware to handleā€¦ Mar 17, 2017
config Add GeoIP configurations and setup hooks for adv analytics Dec 29, 2016
database create api quota index Dec 21, 2017
docs Update docs logo; update logo in about page; update well CSS to betteā€¦ Feb 11, 2018
public Update docs logo; update logo in about page; update well CSS to betteā€¦ Feb 11, 2018
resources Change button class to be more general Oct 26, 2017
storage 2.0 init commit Nov 3, 2015
tests Add option to redirect 404s and disabled URLs; update setup picture fā€¦ Sep 11, 2016
util Bump version to 2.2.0; fix versioning script May 7, 2017
.env.setup Bump version to 2.2.0; fix versioning script May 7, 2017
.gitignore Do not track vendor dir Oct 30, 2016
.jshintrc delegate button actions to parent & add API active toggle logic Dec 12, 2015
.travis.yml Install dependencies thorugh composer on CI Feb 27, 2016
LICENSE Correct bugs for LinkController Nov 7, 2015 Update logo link Jan 11, 2018
artisan 2.0 init commit Nov 3, 2015
composer.json Implement optional reCAPTCHA for registrations May 17, 2017
composer.lock Implement optional reCAPTCHA for registrations May 17, 2017
mkdocs.yml Fix custom ending bug affecting non-truthy endings, update documentatā€¦ Mar 20, 2017
phpunit.xml Fix unit tests Sep 11, 2016
server.php 2.0 init commit Nov 3, 2015

Polr Logo

šŸš” A modern, minimalist, and lightweight URL shortener.

GitHub license GitHub release Builds status Docs

Polr is an intrepid, self-hostable open-source link shortening web application with a robust API. It allows you to host your own URL shortener, to brand your URLs, and to gain control over your data. Polr is especially easy to use, and provides a modern, themable feel.

Getting Started - API Documentation - Contributing - Bugs - IRC


Polr is written in PHP and Lumen, using MySQL as its primary database.

  • To get started with Polr on your server, check out the installation guide. You can clone this repository, or download a release.
  • To get started with the Polr API, check out the API guide.

Installation TL;DR: clone or download this repository, set document root to public/, create MySQL database, go to and follow instructions.


To test out the demo, head to and use the following credentials:

  • Username: demo-admin
  • Password: demo-admin

Upgrading Polr

Upgrading from 1.x:

There are breaking changes between 2.x and 1.x; it is not yet possible to automatically upgrade to 2.x.

Upgrading from 2.x:

  • Back up your database and files
  • Update by using git pull or downloading a release
  • Run composer install --no-dev -o to ensure dependencies are up to date
  • Migrate with php artisan migrate to ensure database structure is up to date

Browser Extensions



We would like to thank Oregon State University's Open Source Lab for providing resources for our infrastructure. The Polr website and demo are hosted on their infrastructure.

Thank you to lastspark for providing our logo's icon.


Polr uses Semantic Versioning


Copyright (C) 2013-2018 Chaoyi Zha

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.