The above is a application does not access a server and runs entirely in the browser.

How it works

Everything is done in javascript where when you add and remove an item is deleted the DOM is modified. Each change calls a function to create a code that is placed in the url which can be copied. When the copied url is pasted the code is read and javascript adds the to-do list items

A problem that can occur is the url can get to long where it will not read it and I believe it looks better when it is a shorter url. 3 things were done to reduce the lenght of the url

Reduced character set, by default it is utf-8 character set which in this case takes 8 bits per character. We can reduce this by using a restricted character set of Base-64 which takes 6 bits per character. This is also benifital has uri valid characters are simailar to the Base-64 character set

Mapping the most common characters in english to the shortest characters in arial

Not added: Lz compression, this would negate the mapping to the shortest characters and on the shortest lists would actually make the list longer. On long lists this could be useful

Not added: Further reduced character set to Base 32, I felt this was to restricted as it removed most additional characters and only lower case which would be seen on the page