Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Lesshand

Lesshand is a shorthand for the 21st century. You can speed up your writing and typing by about 5% by learning just 10 of its abbreviations.1

Unlike other shorthand systems, Lesshand is lossless. This means that you can type quickly in Lesshand and have a computer program decode your shorthand to standard written English. This makes Lesshand suitable for composing emails, documents, messages, and more.

It's easy to learn Lesshand. In fact, you already know a lot of it! Lesshand uses familiar abbreviations like "u" for "you", "v" for "very", and "bc" for "because". All of its abbreviations are designed to be mnemonic. It's also completely incremental; you can learn just a few abbreviations and start applying them right away.

Check out the tour for a quick overview of Lesshand. For more information, see the documentation.

Lesshand stands for lossLESS shortHAND.


  1. See the documentation for the details of how this claim is evaluated.

Tour

Abbreviations

Lesshand has abbreviations for common words. You probably already know a lot of them! For example, "you" is written as "u", "because" is "bc", and "people" is "ppl".

Here are ten familiar abbreviations for common words to get you started:

are --> r
because --> bc
no --> n
really --> rly
though --> tho
tomorrow --> tmrw
very --> v
yes --> y
you --> u
your --> ur

Using these abbreviations, the sentence

You are really going to enjoy your day tomorrow, it'll be very special.

would be written

u r rly going to enjoy ur day tmrw, it'll be v special.

That's 22% shorter!

A note on "the"

Almost all of Lesshand's abbreviations are mnemonic, meaning they are designed to be easy to remember. They are usually either existing abbreviations (like "u" for "you") or they are formed from letters that appear in the abbreviated word (like "abt" for "about"). The only exception is the abbreviation for "the".

"The" is the most common word in English, so it's essential that it has a one-letter abbreviation. However, several other common words start with "t", such as "to" and "that". Additionally, "the" should be as easy as possible to type, so it needs an abbreviation that's on the "home row" of standard QWERTY keyboards.

With these considerations in mind, "the" is abbreviated as "l". This may seem counterintuitive, but it won't be too hard to remember since you'll use it all the time. Additionally, it's very effective: just using this single abbreviation can save you about 1% of your time while writing!

The most effective abbreviations

Here are the ten abbreviations that will save you the most time:

the --> l
and --> d
of --> o
to --> t
for --> f
that --> tt
was --> w
from --> m
are --> r
is --> s

These will speed up your writing and typing by about 5%.

When you've mastered those, here are a few more:

could --> cd
should --> sd
would --> wd
this --> h
have --> hv
not --> x
about --> abt
between --> bw
without --> wo
I --> i

See Abbreviations for the full list.

Phrases

Lesshand reuses abbreviations for phrases are already common in English. These are prefixed by "," to disambiguate them with actual uses of that abbreviation. For example, "thank you" becomes ",ty" and "I don't care" becomes ",idc".

Suffixes

The suffix "ing" can be replaced by "q". For example, "learning" may be abbreviated "learnq". Similarly, the suffix "tion" may be replaced by "T", turning "celebration" into "celebraT". See Suffixes for more information.

Namespaces

For less common words, Lesshand provides namespaces of abbreviations. For example, the namespace "c" is for names of countries. "Sweden" can be abbreviated "c,se" and "United Kingdom" as "c,gb". The "b" namespace is for basketball terms. "b,den" stands for "Denver Nuggets". See Namespaces for more information.

Try it!

Try Lesshand here! Type plain English in the upper box, then hit "Encode" to compress it into Lesshand. Alternatively, type Lesshand in the lower box and hit "Decode" to decompress it into English.

English

Abbreviations

Lesshand provides abbreviations for common words.

Common words

Lesshand abbreviates the following exceptionally common words:

about --> abt
actually --> acty
after --> af
also --> al
and --> d
aren't --> r'
are --> r
around --> ard
be --> b
because --> bc
been --> bn
before --> bf
between --> bw
but --> bt
can --> c
can't --> c'
could --> cd
couldn't --> cd'
down --> dn
especially --> esp
every --> evy
for --> f
forward --> fwd
from --> m
further --> furth
her --> hr
his --> hs
how --> hw
however --> hwv
I'd --> id
I --> i
I'll --> il
I'm --> im
into --> io
isn't --> s'
is --> s
I've --> iv
just --> j
much --> mh
need --> nd
needn't --> nd'
never --> nv
no --> n
not --> x
of --> o
okay --> k
only --> oy
otherwise --> othw
over --> ov
please --> pls
really --> rly
several --> sev
shouldn't --> sd'
should --> sd
thanks --> tks
that --> tt
the --> l
they --> e
this --> h
though --> tho
through --> thro
together --> tog
tomorrow --> tmrw
to --> t
very --> v
wasn't --> w'
was --> w
were --> ee
weren't --> ee'
will --> ll
willn't --> ll'
without --> wo
won't --> wo'
wouldn't --> wd'
would --> wd
yeah --> yh
yes --> y
you're --> u'
your --> ur
you --> u

Nouns

In English, nouns may be inflected for number (adding "s" or "es" to mark plurality) or the genitive case (adding "'s" or "s'" to show possession). In Lesshand, these inflections are are marked by adding "s", "'" (apostrophe), or "s'" ("s" then apostrophe) to the end of a noun abbreviation respectively. Not all nouns have each form: we don't say "everythings".

Lesshand abbreviates the following common nouns and their inflections:

address --> addr
apartment --> aptm
apartment's --> aptm'
apartments --> aptms
apartments' --> aptms'
appointment --> appt
appointment's --> appt'
appointments --> appts
appointments' --> appts'
babies --> bbs
babies' --> bbs'
baby --> bb
baby's --> bb'
billion --> bil
billion's --> bil'
billions --> bils
billions' --> bils'
complex --> cx
context --> ctx
context's --> ctx'
contexts' --> ctxs'
department --> dept
department's --> dept'
departments --> depts
departments' --> depts'
dozen --> doz
dozen's --> doz'
dozens --> dozs
dozens' --> dozs'
email --> eml
email's --> eml'
emails --> emls
emails' --> emls'
everything --> evthg
everything's --> evthg'
government --> govt
government's --> govt'
governments --> govts
governments' --> govts'
hundred --> hun
hundred's --> hun'
hundreds --> huns
hundreds' --> huns'
information --> info
interest --> ist
interest's --> ist'
interesting --> istq
interests --> ists
interests' --> ists'
management --> mgmt
management's --> mgmt'
market --> mkt
marketing --> mktq
market's --> mkt'
markets --> mkts
markets' --> mkts'
maximum --> maxm
maximum's --> maxm'
meeting --> mtg
meeting's --> mtg'
meetings --> mtgs
meetings' --> mtgs'
million --> mil
million's --> mil'
millions --> mils
millions' --> mils'
minimum --> minm
minimum's --> minm'
move --> mv
moving --> mvq
move's --> mv'
moves --> mvs
moves' --> mvs'
organization --> org
organization's --> org'
organizations --> orgs
organizations' --> orgs'
other --> oth
othering --> othq
other's --> oth'
others --> oths
others' --> oths'
people --> ppl
people's --> ppl'
president --> pres
president's --> pres'
presidents' --> press'
question --> q
questioning --> qq
question's --> q'
questions --> qs
questions' --> qs'
request --> rqst
request's --> rqst'
requests --> rqsts
requests' --> rqsts'
requirement --> reqm
requirement's --> reqm'
requirements --> reqms
requirements' --> reqms'
right --> rt
righting --> rtq
right's --> rt'
rights --> rts
rights' --> rts'
service's --> svc'
services --> svcs
services' --> svcs'
service --> svc
something --> smth
something's --> smth'
somethings --> smths
somethings' --> smths'
thing's --> tg'
things --> tgs
things' --> tgs'
thing --> tg
thousands's --> thous'
thousandss' --> thouss'
thousands --> thous
thousand --> thou
tonight's --> tn'
tonight --> tn
trillion's --> tril'
trillions --> trils
trillions' --> trils'
trillion --> tril

Adjectives

Adjectives may be inflected to indicate a degree of comparison (by adding "er", or "est" to the end), or to use them as adverbs ("ly"). In Lesshand, these inflections are marked by adding the same suffix to the abbreviation of the root word (e.g., "intl" becomes "intlly").

Lesshand abbreviates the following common adjectives:

good --> gd
international --> intl
internationally --> intlly
little --> lil
littlest --> lilst
major --> mjr
minor --> mnr

Verbs

There are generally five forms of verbs in English:

  1. The infinitive/dictionary/lemma/"to" form, e.g. "run"
  2. "-ing" form, i.e., present participle or gerund, e.g., "they were running"
  3. "-ed" form, i.e., simple past or preterite, e.g., "they ran" or "we watched"
  4. A different "-ed" form called the participle, only different from preterite for irregular verbs, i.e., following "was" or "were", e.g., "chosen"
  5. An "-s" form, i.e., third person singular present, e.g., "he runs"

For verbs that have an abbreviation of their infinitive, the abbreviation of the present participle can be formed by adding "q" to the end. Lesshand does not currently provide abbreviations for the other conjugations.

Lesshand abbreviates the following common verbs:

have --> hv
having --> hvq
keeping --> kpq
keep --> kp
knowing --> kwq
knowingly --> kwqly
know --> kw
minimize --> minz
minimizing --> minzq
maximize --> maxz
maximizing --> maxzq

Phrases

Lesshand reuses the following abbreviations for phrases that are already common in English. They are prefixed by "," to disambiguate them with actual uses of that abbreviation.

as far as I know --> ,afaik
be right back --> ,brb
for real --> ,fr
for your information --> ,fyi
I don't care --> ,idc
I don't know --> ,idk
if I remember correctly --> ,iirc
if I understand correctly --> ,iiuc
I love you --> ,ily
I love you so much --> ,ilysm
in case you missed it --> ,icymi
in my honest opinion --> ,imho
in my opinion --> ,imo
just kidding --> ,jk
looks good to me --> ,lgtm
no problem --> ,np
of course --> ,ofc
on my way --> ,omw
right now --> ,rn
talk to you later --> ,ttyl
talk to you soon --> ,ttys
thank you so much --> ,tysm
thank you --> ,ty
to be honest --> ,tbh
with respect to --> ,wrt
you're welcome --> ,yw

Contractions

In addition to the contractions listed above, the following are also abbreviated (even though their lemma is not):

ain't --> ai'
didn't --> di'
don't --> do'
hadn't --> had'
hasn't --> has'
mustn't --> must'
needn't --> need'
oughtn't --> ought'

Days

The days of the week each have a four-letter abbreviation:

Sunday --> sund
Sundays --> sunds
Sunday's --> sund'
Sundays' --> sunds'
Monday --> mond
Mondays --> monds
Monday's --> mond'
Mondays' --> monds'
Tuesday --> tues
Tuesdays --> tuess
Tuesday's --> tues'
Tuesdays' --> tuess'
Wednesday --> weds
Wednesdays --> wedss
Wednesday's --> weds'
Wednesdays' --> wedss'
Thursday --> thur
Thursdays --> thurs
Thursday's --> thur'
Thursdays' --> thurs'
Friday --> frid
Fridays --> frids
Friday's --> frid'
Fridays' --> frids'
Saturday --> satd
Saturdays --> satds
Saturday's --> satd'
Saturdays' --> satds'

Unfortunately, the standard three-letter abbreviations collide with actual words ("sun", "wed", "sat").

Months

Months are abbreviated as follows:

January --> jan
Januarys --> jans
January's --> jan'
Januarys' --> jans'
February --> feb
Februarys --> febs
February's --> feb'
Februarys' --> febs'
March --> mar
Marchs --> mars
March's --> mar'
Marchs' --> mars'
April --> apr
Aprils --> aprs
April's --> apr'
Aprils' --> aprs'
June --> jun
Junes --> juns
June's --> jun'
Junes' --> juns'
July --> jul
Julys --> juls
July's --> jul'
Julys' --> juls'
August --> aug
Augusts --> augs
August's --> aug'
Augusts' --> augs'
September --> sep
Septembers --> seps
September's --> sep'
Septembers' --> seps'
October --> oct
Octobers --> octs
October's --> oct'
Octobers' --> octs'
November --> nov
Novembers --> novs
November's --> nov'
Novembers' --> novs'
December --> dec
Decembers --> decs
December's --> dec'
Decembers' --> decs'

Numbers

The numbers zero through twenty may be abbreviated like so:

zero --> n0
one --> n1
two --> n2
three --> n3
four --> n4
five --> n5
six --> n6
seven --> n7
eight --> n8
nine --> n9
ten --> n10
eleven --> n11
twelve --> n12
thirteen --> n13
fourteen --> n14
fifteen --> n15
sixteen --> n16
seventeen --> n17
eighteen --> n18
nineteen --> n19
twenty --> n20

And similarly for the first many ordinals:

zeroth --> o0
first --> o1
second --> o2
third --> o3
fourth --> o4
fifth --> o5
sixth --> o6
seventh --> o7
eighth --> o8
ninth --> o9
tenth --> o10
eleventh --> o11
twelfth --> o12
thirteenth --> o13
fourteenth --> o14
fifteenth --> o15
sixteenth --> o16
seventeenth --> o17
eighteenth --> o18
nineteenth --> o19
twentieth --> o20

Cities

The following city names are abbreviated. They are prefixed by "," to disambiguate them from other words ("sea" is both a synonym of "ocean" and an abbreviation for "Seattle"). We'd like to expand this list with time!

Brooklyn --> ,bk
Chicago --> ,chi
London --> ,lon
Los Angeles --> ,lax
Mexico City --> ,cdmx
New York City --> ,nyc
Portland --> ,pdx
Seattle --> ,sea
St Louis --> ,stl

U.S. States

Alabama --> ,al
Alaska --> ,ak
Arizona --> ,az
Arkansas --> ,ar
California --> ,ca
Colorado --> ,co
Connecticut --> ,ct
Delaware --> ,de
Florida --> ,fl
Georgia --> ,ga
Hawaii --> ,hi
Idaho --> ,id
Illinois --> ,il
Indiana --> ,in
Iowa --> ,ia
Kansas --> ,ks
Kentucky --> ,ky
Louisiana --> ,la
Maine --> ,me
Maryland --> ,md
Massachusetts --> ,ma
Michigan --> ,mi
Minnesota --> ,mn
Mississippi --> ,ms
Missouri --> ,mo
Montana --> ,mt
Nebraska --> ,ne
Nevada --> ,nv
New Hampshire --> ,nh
New Jersey --> ,nj
New Mexico --> ,nm
New York --> ,ny
North Carolina --> ,nc
North Dakota --> ,nd
Ohio --> ,oh
Oklahoma --> ,ok
Oregon --> ,or
Pennsylvania --> ,pa
Rhode Island --> ,ri
South Carolina --> ,sc
South Dakota --> ,sd
Tennessee --> ,tn
Texas --> ,tx
Utah --> ,ut
Vermont --> ,vt
Virginia --> ,va
Washington --> ,wa
West Virginia --> ,wv
Wisconsin --> ,wi
Wyoming --> ,wy

Namespaces

Namespaces are abbreviations that begin with a letter followed by a comma. Everything after the letter is conceptually related. We hope to add more namespaces in the future.

Basketball (b)

National Basketball Association --> b,nba
Atlanta Hawks --> b,atl
Boston Celtics --> b,bos
Brooklyn Nets --> b,bkn
Charlotte Hornets --> b,cha
Chicago Bulls --> b,chi
Cleveland Cavaliers --> b,cle
Dallas Mavericks --> b,dal
Denver Nuggets --> b,den
Detroit Pistons --> b,det
Golden State Warriors --> b,gsw
Houston Rockets --> b,hou
Indiana Pacers --> b,ind
Los Angeles Clippers --> b,lac
Los Angeles Lakers --> b,lal
Memphis Grizzlies --> b,mem
Miami Heat --> b,mia
Milwaukee Bucks --> b,mil
Minnesota Timberwolves --> b,min
New Orleans Pelicans --> b,nop
New York Knicks --> b,nyk
Oklahoma City Thunder --> b,okc
Orlando Magic --> b,orl
Phoenix Suns --> b,phx
Portland Trail Blazers --> b,por
Sacramento Kings --> b,sac
San Antonio Spurs --> b,sas
Toronto Raptors --> b,tor
Utah Jazz --> b,uta
Washington Wizards --> b,was

Countries (c)

Countries are abbreivated according to ISO 3166-1 alpha-2.

Afghanistan --> c,af
Albania --> c,al
Algeria --> c,dz
American Samoa --> c,as
Andorra --> c,ad
Angola --> c,ao
Anguilla --> c,ai
Antarctica --> c,aq
Antigua and Barbuda --> c,ag
Argentina --> c,ar
Armenia --> c,am
Aruba --> c,aw
Australia --> c,au
Austria --> c,at
Azerbaijan --> c,az
Bahamas --> c,bs
Bahrain --> c,bh
Bangladesh --> c,bd
Barbados --> c,bb
Belarus --> c,by
Belgium --> c,be
Belize --> c,bz
Benin --> c,bj
Bermuda --> c,bm
Bhutan --> c,bt
Bolivia --> c,bo
Bosnia and Herzegovina --> c,ba
Botswana --> c,bw
Bouvet Island --> c,bv
Brazil --> c,br
British Indian Ocean Territory --> c,io
Brunei --> c,bn
Bulgaria --> c,bg
Burkina Faso --> c,bf
Burundi --> c,bi
Cambodia --> c,kh
Cameroon --> c,cm
Canada --> c,ca
Cape Verde --> c,cv
Cayman Islands --> c,ky
Central African Republic --> c,cf
Chad --> c,td
Chile --> c,cl
China --> c,cn
Christmas Island --> c,cx
Coc --> c,cc
Colombia --> c,co
Comoros --> c,km
Congo --> c,cg
Democratic Republic of the Congo --> c,cd
Cook Islands --> c,ck
Costa Rica --> c,cr
Ivory Coast --> c,ci
Croatia --> c,hr
Cuba --> c,cu
Cyprus --> c,cy
Czech Republic --> c,cz
Denmark --> c,dk
Djibouti --> c,dj
Dominica --> c,dm
Dominican Republic --> c,do
Ecuador --> c,ec
Egypt --> c,eg
El Salvador --> c,sv
Equatorial Guinea --> c,gq
Eritrea --> c,er
Estonia --> c,ee
Ethiopia --> c,et
Falkland Islands --> c,fk
Faroe Islands --> c,fo
Fiji --> c,fj
Finland --> c,fi
France --> c,fr
French Guiana --> c,gf
French Polynesia --> c,pf
French Southern Territories --> c,tf
Gabon --> c,ga
Gambia --> c,gm
Germany --> c,de
Ghana --> c,gh
Gibraltar --> c,gi
Greece --> c,gr
Greenland --> c,gl
Grenada --> c,gd
Guadeloupe --> c,gp
Guam --> c,gu
Guatemala --> c,gt
Guernsey --> c,gg
Guinea --> c,gn
Guyana --> c,gy
Haiti --> c,ht
Heard Island and McDonald Islands --> c,hm
Vatican City --> c,va
Honduras --> c,hn
Hong Kong --> c,hk
Hungary --> c,hu
Iceland --> c,is
India --> c,in
Indonesia --> c,id
Iran --> c,ir
Iraq --> c,iq
Ireland --> c,ie
Isle of Man --> c,im
Israel --> c,il
Italy --> c,it
Jamaica --> c,jm
Japan --> c,jp
Jersey --> c,je
Jordan --> c,jo
Kazakhstan --> c,kz
Kenya --> c,ke
Kiribati --> c,ki
Democratic People's Republic of Korea --> c,kp
South Korea --> c,kr
Kuwait --> c,kw
Kyrgyzstan --> c,kg
Laos --> c,la
Latvia --> c,lv
Lebanon --> c,lb
Lesotho --> c,ls
Liberia --> c,lr
Libya --> c,ly
Liechtenstein --> c,li
Lithuania --> c,lt
Luxembourg --> c,lu
Macao --> c,mo
Macedonia --> c,mk
Madagascar --> c,mg
Malawi --> c,mw
Malaysia --> c,my
Maldives --> c,mv
Mali --> c,ml
Malta --> c,mt
Marshall Islands --> c,mh
Martinique --> c,mq
Mauritania --> c,mr
Mauritius --> c,mu
Mayotte --> c,yt
Mexico --> c,mx
Micronesia --> c,fm
Moldova --> c,md
Monaco --> c,mc
Mongolia --> c,mn
Montenegro --> c,me
Montserrat --> c,ms
Morocco --> c,ma
Mozambique --> c,mz
Myanmar --> c,mm
Namibia --> c,na
Nauru --> c,nr
Nepal --> c,np
Netherlands --> c,nl
Netherlands Antilles --> c,an
New Caledonia --> c,nc
New Zealand --> c,nz
Nicaragua --> c,ni
Niger --> c,ne
Nigeria --> c,ng
Niue --> c,nu
Norfolk Island --> c,nf
Northern Mariana Islands --> c,mp
Norway --> c,no
Oman --> c,om
Pakistan --> c,pk
Palau --> c,pw
Palestinian Territory --> c,ps
Panama --> c,pa
Papua New Guinea --> c,pg
Paraguay --> c,py
Peru --> c,pe
Philippines --> c,ph
Pitcairn --> c,pn
Poland --> c,pl
Portugal --> c,pt
Puerto Rico --> c,pr
Qatar --> c,qa
Romania --> c,ro
Russia --> c,ru
Rwanda --> c,rw
Saint Kitts and Nevis --> c,kn
Saint Lucia --> c,lc
Saint Pierre and Miquelon --> c,pm
St Vincent and the Grenadines --> c,vc
Samoa --> c,ws
San Marino --> c,sm
Sao Tome and Principe --> c,st
Saudi Arabia --> c,sa
Senegal --> c,sn
Serbia --> c,rs
Seychelles --> c,sc
Sierra Leone --> c,sl
Singapore --> c,sg
Slovakia --> c,sk
Slovenia --> c,si
Solomon Islands --> c,sb
Somalia --> c,so
South Africa --> c,za
South Georgia and the South Sandwich Islands --> c,gs
South Sudan --> c,ss
Spain --> c,es
Sri Lanka --> c,lk
Sudan --> c,sd
Suriname --> c,sr
Svalbard and Jan Mayen --> c,sj
Swaziland --> c,sz
Sweden --> c,se
Switzerland --> c,ch
Syrian Arab Republic --> c,sy
Taiwan --> c,tw
Tajikistan --> c,tj
Tanzania --> c,tz
Thailand --> c,th
Togo --> c,tg
Tokelau --> c,tk
Tonga --> c,to
Trinidad and Tobago --> c,tt
Tunisia --> c,tn
Turkey --> c,tr
Turkmenistan --> c,tm
Turks and Caicos Islands --> c,tc
Tuvalu --> c,tv
Uganda --> c,ug
Ukraine --> c,ua
United Arab Emirates --> c,ae
United Kingdom --> c,gb
United States --> c,us
United States Minor Outlying Islands --> c,um
Uruguay --> c,uy
Uzbekistan --> c,uz
Vanuatu --> c,vu
Venezuela --> c,ve
Vietnam --> c,vn
British Virgin Islands --> c,vg
US Virgin Islands --> c,vi
Wallis and Futuna --> c,wf
Western Sahara --> c,eh
Yemen --> c,ye
Zambia --> c,zm
Zimbabwe --> c,zw

Elements (e)

actinium --> e,ac
aluminum --> e,al
americium --> e,am
antimony --> e,sb
argon --> e,ar
arsenic --> e,as
astatine --> e,at
barium --> e,ba
berkelium --> e,bk
beryllium --> e,be
bismuth --> e,bi
bohrium --> e,bh
boron --> e,b
bromine --> e,br
cadmium --> e,cd
calcium --> e,ca
californium --> e,cf
carbon --> e,c
cerium --> e,ce
cesium --> e,cs
chlorine --> e,cl
chromium --> e,cr
cobalt --> e,co
copernicium --> e,cn
copper --> e,cu
curium --> e,cm
darmstadtium --> e,ds
dubnium --> e,db
dysprosium --> e,dy
einsteinium --> e,es
erbium --> e,er
europium --> e,eu
fermium --> e,fm
flerovium --> e,fl
fluorine --> e,f
francium --> e,fr
gadolinium --> e,gd
gallium --> e,ga
germanium --> e,ge
gold --> e,au
hafnium --> e,hf
hassium --> e,hs
helium --> e,he
holmium --> e,ho
hydrogen --> e,h
indium --> e,in
iodine --> e,i
iridium --> e,ir
iron --> e,fe
krypton --> e,kr
lanthanum --> e,la
lawrencium --> e,lr
lead --> e,pb
lithium --> e,li
livermorium --> e,lv
lutetium --> e,lu
magnesium --> e,mg
manganese --> e,mn
meitnerium --> e,mt
mendelevium --> e,md
mercury --> e,hg
molybdenum --> e,mo
moscovium --> e,mc
neodymium --> e,nd
neon --> e,ne
neptunium --> e,np
nickel --> e,ni
nihonium --> e,nh
niobium --> e,nb
nitrogen --> e,n
nobelium --> e,no
oganesson --> e,og
osmium --> e,os
oxygen --> e,o
palladium --> e,pd
phosphorus --> e,p
platinum --> e,pt
plutonium --> e,pu
polonium --> e,po
potassium --> e,k
praseodymium --> e,pr
promethium --> e,pm
protactinium --> e,pa
radium --> e,ra
radon --> e,rn
rhenium --> e,re
rhodium --> e,rh
roentgenium --> e,rg
rubidium --> e,rb
ruthenium --> e,ru
rutherfordium --> e,rf
samarium --> e,sm
scandium --> e,sc
seaborgium --> e,sg
selenium --> e,se
silicon --> e,si
silver --> e,ag
sodium --> e,na
strontium --> e,sr
sulfur --> e,s
tantalum --> e,ta
technetium --> e,tc
tellurium --> e,te
tennessine --> e,ts
terbium --> e,tb
thallium --> e,tl
thorium --> e,th
thulium --> e,tm
tin --> e,sn
titanium --> e,ti
uranium --> e,u
vanadium --> e,v
wolfram --> e,w
xenon --> e,xe
ytterbium --> e,yb
yttrium --> e,y
zinc --> e,zn
zirconium --> e,zr

Suffixes

The following substitutions may be made to suffixes:

able --> B
ation --> A
ent --> N
hood --> O
ing --> q
ity --> Y
ment --> M
ness --> S
ship --> H
ted --> D
tion --> T

Comparison to other shorthands

The principal difference between Lesshand and other shorthands is that Lesshand is lossless. This means that you can type quickly in Lesshand and have a computer program decode your shorthand to standard written English, making Lesshand suitable for composing emails, documents, messages, and more.

Another key differentiator is that Lesshand is alphabetic, meaning it doesn't use any symbols outside of what you'd normally find on a keyboard.

Lesshand also emphasizes memorability and ease of learning.

The following is a comparison between Lesshand and a few typeable shorthands. As you can see, Lesshand is considerably more verbose, but also considerably easier to read. Furthermore, the sample text pleasantly justifies the losslessness of Lesshand. There would be no point in writing this letter in these other shorthands: the recipient couldn't read it!

Dear Sir: In reply to your request of March 5, several of our sales catalogues are being shipped to you, under separate cover. Thank you for your interest in our organization. We appreciate your help. If we can be of further service, let us know. Sincerely,

Lesshand:

Dear Sir: In reply to ur rqst o mar 5, sev o our sales catalogues r beq shipped to u, under separate cover. Thank u f ur ist in our org. We appreciate ur help. If we c be o furth svc, let us kw. Sincerely,

Personal Shorthand:

ds n rpli t y rqst o mr 5, svrl o r sals ctlgs r bg spd t u, u sprt cvr. t u f y ntrst n r org. w aprsat y hlp. f w c b o frtr srvc, lt u n. s

Keyscript:

drsr n ri tr rqz vmrc 5 sv v l sls kegs l bg ji tu xr wpt kq. hu qr nez nl lgc. wijt r lp. fwkb vfrh srvs qsn. swrl

Evaluation

This page describes how Lesshand is evaluated against its goals.

We evaluated Lesshand by calculating our metrics on a corpus consisting of the following texts:

The results were as follows:

  • Typing or handwriting these texts in Lesshand would be about 13% easier.
  • Encoding the texts in Lesshand reduced their size (number of characters) by 11.93%.
  • Decoding the texts as if they were written in Lesshand produced a 0.06% change in content, providing good evidence that Lesshand is lossless.
  • Encoding the texts twice produced identical results to doing so once, again providing good evidence that Lesshand is lossless.
  • Roundtripping (encoding then decoding) the texts produced a result that was only 0.13% different from the original. Further investigation reveals that most of this is actually due to technical bugs in the software implementation, rather than the abbreviation scheme itself.

You can re-run this evaluation by collecting the above texts into corpus.txt and running:

cargo run -r --bin=lesshand-design -- metrics corpus.txt

Most effective abbreviations

We further collected data on the most effective abbreviations. The top 7 abbreviations cumulatively save about 5% effort, the top 20 cumulatively save 8.5%, and the top 200 save about 12%. The following list shows the top 20 in decreasing order of effectiveness, along with how much effort each one saves.

the --> l: 1.71% (cumulative: 1.71%)
and --> d: 1.03% (cumulative: 2.74%)
to --> t: 0.70% (cumulative: 3.44%)
that --> tt: 0.46% (cumulative: 3.90%)
not --> x: 0.45% (cumulative: 4.35%)
you --> u: 0.44% (cumulative: 4.79%)
of --> o: 0.44% (cumulative: 5.24%)
was --> w: 0.36% (cumulative: 5.60%)
for --> f: 0.35% (cumulative: 5.95%)
her --> hr: 0.32% (cumulative: 6.27%)
they --> e: 0.25% (cumulative: 6.51%)
from --> m: 0.23% (cumulative: 6.75%)
very --> v: 0.23% (cumulative: 6.98%)
have --> hv: 0.23% (cumulative: 7.21%)
I --> i: 0.22% (cumulative: 7.43%)
this --> h: 0.22% (cumulative: 7.65%)
could --> cd: 0.20% (cumulative: 7.85%)
is --> s: 0.20% (cumulative: 8.05%)
be --> b: 0.20% (cumulative: 8.25%)
were --> ee: 0.19% (cumulative: 8.45%)

You can re-run this evaluation by collecting the above texts into corpus.txt and running:

cargo run -r --bin=lesshand-design -- top corpus.txt

Goals and metrics

This page describes the goals of Lesshand, and metrics that are used to evaluate whether Lesshand meets them. See Evaluation for how Lesshand is evaluated against these metrics. See also Requirements for the hard-and-fast rules that Lesshand's abbreviations conform to.

Lossless

Lesshand should be lossless.

Related requirements:

Metric: Round-tripping

Encoding and decoding should preserve more than 99% of English writing.

Metric: Idempotency

Encoding should be more than 99% idempotent. That is, encoding twice should be (almost exactly) the same as encoding once.

Effective

Lesshand should save the user effort.

Related requirements:

Metric: Effort ratio

Encoding should reduce effort by more than 5%.

Metric: Compression ratio

Encoding should reduce text length by more than 3%.

Incremental

You can get started right away and gradually increase your speed as you learn more of Lesshand. You can freely intermix encoded and un-encoded text, i.e., you won't "accidentally" write encoded versions of anything.

Related requirements:

Metric: Decoding normal text

Decoding non-shorthand text should alter less than 3% of the text.

Good abbreviations

To evaluate the quality of Lesshand's abbreviations, we have developed three different numeric scores. Each score attempts to approximate some important quality of an abbreviation.

  • Effort approximates how much time and energy an abbreviation saves. Good abbreviations save lots of effort.
  • Memorability approximates how easy it is to learn and remember an abbreviation. Good abbreviations are highly memorable.
  • Ambiguity approximates how ambiguous a given abbreviation is. Good abbreviations have low ambiguity, i.e., are unambiguous.

For each score, there is some threshold that abbreviations must pass to be included in Lesshand. These thresholds are fundamentally arbitrary, but each seems to include enough abbreviations to be useful while excluding a decent number of undesirable abbreviations.

Effort

A shorthand should save the user time and energy. To evaluate Lesshand, we assign every word or phrase a score called an effort. Effort is an estimate of how hard the word or phrase is to write or type. Good abbreviations are ones that save a lot of effort.

R003: Effort requires that all abbreviations in Lesshand save at least 5 effort, except those for the 128 most common words, which must save at least 1.

Space is always assigned an effort of 1.

Keyboard

Keyboard effort is determined as follows:

  • By default, keys have an effort of 2.
  • Being a modified key adds 2 to the effort, i.e., symbols typed using shift, e.g., capitals, symbols like "!".
  • Distance from the home row increases cost as shown in the following image:

Keyboard distance cost

Keyboard effort ranges from 2-7. Here are some example efforts:

  • f - 2
  • [ - 3
  • F - 4
  • : - 5
  • @ - 6
  • ~ - 7

When keys are used twice in a row, the second use always has an effort of 2. This reflects the fact that your finger has already traveled to the key and you are already holding down shift (if necessary for that key).

All of this is relative to a ANSI US QWERTY keyboard.

Printing

Printed effort is determined as follows:

  • By default, characters have an effort equal to two times the number of strokes it takes to print them, where a "stroke" is defined to be lifting the pen off the page.
  • Then the number of turns is added to their effort, where a turn is a sharp corner when printing (e.g. "<" has one, but "/" has none).

Here are some example efforts:

  • f - 4
  • [ - 4
  • F - 5
  • : - 4
  • @ - 3
  • ~ - 2
  • / - 2
  • < - 3
  • m - 4

Memorability

Lesshand should be easy to learn, so its abbreviations should be easy to remember. It should also be easy to read, so its abbreviations should echo the word or phrase they abbreviate. To evaluate these aspects of Lesshand, we assign every abbreviation a score called memorability. Good abbreviations have high memorability.

R007: Memorable requires that all abbreviations in Lesshand have a memorability of more than 5, except those for the 128 most common words.

Memorability is additive. For an abbreviation long --> short, it works as follows:

  • Add 3 if short starts with the same letter as long
  • Add 3 if short ends with the same letter as long
  • Add the length of short if it is a prefix of long
  • Add the length of short if it is equal to long without all of the vowels
  • Add 1 for each character that short shares with long (if they appear in the same order)
  • Add 10 for being a contraction of another abbreviation (e.g., cn' gets +10 because of cn)
  • Remove 1 if long contains an apostrophe and short does not.

For example:

  • and --> d: has a memorabilty of 5
  • can --> cn: has a memorability of 10
  • government --> govt: has a memorability 10
  • if I remember correctly --> ,iirc has a memorability of 7

Ambiguity

Lesshand should be easy to read and write, so its abbreviations should be reasonably unambiguous. To evaluate this aspect of Lesshand, we assign every abbreviation a score called ambiguity. Good abbreviations have low ambiguity.

R010: Unambiguous requires that all abbreviations in Lesshand have an ambiguity of less than 1100.

The calculation of ambiguity is somewhat complex. It is based on summing the memorability of an abbreviation as if it were an abbreviation for any of the most common 4000 words in English, weighted by the frequency of the word.

Requirements

This page lists requirements for abbreviations that are included with Lesshand. These requirements are enforced by automated tests.

In the remainder of this document, we use the word source for the word or phrase being abbreviated, and target for the abbreviated version.

R001: Typeable

Lesshand should be typeable. It's the 21st century, after all! Thus, abbreviations must not introduce characters that do not appear on ANSI US QWERTY keyboards.

R002: Words

No abbreviation should target an existing word. We check this against the most common 4000 words from the COCA corpus.

R003: Effort

An abbreviation should save the user at least 5 effort, unless it is for one of the 128 most common words in which case it should save at least 1.

Example

"s" is not a good abbreviation for "sad", because it doesn't save much effort.

"n" is an acceptable abbreviation for "no". "no" is exceptionally common, so this abbreviation saves considerable effort by virtue of being used so frequently.

R004: Valid source

The source of an abbreviation may only contain the characters A-z, ', and .

R005: Valid target

The target of an abbreviation may only contain the characters A-z, 0-9, ', , ,, and ;.

R006: Unique

No two abbreviations may share a target.

R007: Memorable

Abbreviations must have a memorability of at least 5, unless the abbreviation is for one of the 128 most common words and is only one character (e.g., for --> f, the --> l).

R008: Uniquely memorable

An abbreviation must not have a higher memorability for a common word other than its source.

R009: Not known to be ambiguous

No abbreviations should have the following highly ambiguous targets:

  • ar: "another", "around"
  • cm: "come", "came"
  • ev: "electric vehicle", "even", "ever", "every"
  • mt: "might", "most", "must"
  • se: "sea", "see", "set", "she"
  • sm: "same", "some"
  • te: "the", "their", "there"
  • th: "the", "that", "their", "this"
  • tr: "their", "they're"
  • wh: "with", "what", "when", "where", "why"
  • wn: "wane", "won", "when"
  • wr: "were", "where"
  • wt: "wait", "what"
  • yr: "year", "your"

This list is simply based on human judgment.

R010: Unambiguous

An abbreviation should have an ambiguity of less than 1100, unless it is an abbreviation for one of the 128 most common words.

Example

"se" is an ambiguous (bad) abbreviation, because it could stand for "sea", "see", "set", "she", etc. It has an ambiguity of 6562.

Command-line interface

Lesshand provides a command-line interface. It can be downloaded from the releases page or built from source.

The command-line interface has two commands: encode and decode. They each take a file path as their only argument and provide output on stdout.

The following is a shell function named lh that can be used to quickly open an editor to type Lesshand. When closing the editor, the expanded text will be copied to the clipboard. This works on Linux or macOS.

if [[ ${OSTYPE} == darwin* ]]; then
  clipboard() { pbcopy; }
else
  clipboard() { xsel -ib; }
fi

lh() {
  f=$(mktemp)
  trap "rm -f '${f}'" EXIT HUP INT QUIT TERM
  "${EDITOR}" "${f}"
  lesshand-cli decode "${f}" | clipboard
  rm -f "${f}"
}

(Caution: on some systems, mktemp may return a path with world-readable permissions.)

Developer documentation

Build

To install from source, you'll need to install Rust and Cargo. Follow the instructions on the Rust installation page. Then, get the source:

git clone https://github.com/langston-barrett/lesshand
cd lesshand

Finally, build everything:

cargo build --release

You can find binaries in target/release. Run tests with cargo test.

Docs

HTML documentation can be built with mdBook:

cd doc
mdbook build
# or
mdbook serve

Linting and formatting

See Linting and formatting.

Profile

Samply

To use Samply:

cargo install samply
cargo build --profile=profiling
samply record ./target/profiling/lesshand-design metrics corpora/gutenberg-out/ff/f168b70c0d6881f52cbde414ca2f6c4d7287e827649bed6a892550b178d3c6.txt

Warnings

Warnings are disallowed in the CI build. Warnings are configured in the top- level Cargo.toml file. We reject all warn-by-default rustc lints, as well as a subset of allowed-by-default lints. The goal is to balance high-quality, maintainable code with not annoying developers.

To allow a lint in one spot, use:

#![allow(unused)]
fn main() {
#[allow(name_of_lint)]
}

Speeding things up

To speed things up a bit, try putting this in .cargo/config.toml:

[build]
rustflags = ["-C", "target-cpu=native"]

Linting and formatting

Lesshand uses several code linters and formatters.

Format

Rust

Rust code formatted with rustfmt. You can install rustfmt with rustup like so:

rustup component add rustfmt

and then run it like this:

cargo fmt --all

Python

Python code formatted with ruff.

ruff format ./**/*.py

Lint

Rust

All code should pass Clippy. You can install Clippy with rustup like so:

rustup component add clippy

and then run it like this:

cargo clippy --workspace -- --deny warnings

Python

Python code linted with ruff.

ruff check ./**/*.py

Markdown

We run typos on the README and doc/ to spell-check the documentation. To run it locally, try:

typos README.md doc/

Automation

Lesshand includes a Cargo package called x that provides ad-hoc automation of development tasks. It can be run with the script at the top level of the repo that is called x. Try x --help.

Cross-references

Lesshand aims to have extensive and accurate user- and developer-facing documentation. To aid us in this task, we use a particular system of cross- references and an associated tool called xref.

xref works by collecting definitions and references from comments embedded in code and documentation. For example, a definition in a Markdown file might look like this:

<--! def: foo-algorithm -->
The algorithm for accomplishing `foo` works as follows...

The corresponding reference in a Rust file would look like:

#![allow(unused)]
fn main() {
// ref: foo-algorithm
fn foo() { /* ... */ }
}

The presence of these comments indicates that the behavior of the code following the reference is documented at the site of the definition. The main idea is for developers to use these comments as reminders. If a developer changes the code near a ref comment, they should probably go look at the documentation around the corresponding def to ensure that it is still accurate.

The tool

While the primary purpose of these comments is not automation, the xref tool does support a few light-weight checks. It checks that:

  • Every ref refers to a matching def
  • No two defs have the same name
  • Every def has at least one ref

In CI, the tool is run as

./x xref .github crates doc

Conventions

The xref tool is quite simple. It essentially checks each line for the following regex: (d|r)ef: [^ \n]+. Conventionally, we only use kebab-case alphanumeric identifiers.