Introducing WildCounts Shorthand

I’m like a stenographer of the wild. Court stenographers transcribe everything happening in a court case; I do it with the wild. Here’s how.

written May 18, 2018 (last updated Sep 8, 2021) • by Jon Sullivan • Category: Count methods


It can take lots of counts to reveal the stories of the wild. To make wild counting a habit, it’s got to be super quick and easy.

I’ve spent the last 15 years refining a method I can use to quickly count a standard suite of species everywhere I go. I flirted with app forms with clever buttons and dropdown lists. In the end I couldn’t beat the speed of typing condensed shorthand text.

I’m now like a court stenographer, transcribing everything happening in a court case. Instead, I do it outside with the wild.

This shorthand has become the WildCounts shorthand. Here’s an introduction on how it works.

Let’s start with some examples. Each of the following is a complete line of WildCounts shorthand, with the first examples containing fewer details than the later examples.

Shorthand Explanation
bellb 1 I see one New Zealand bellbird/korimako (Anthornis melanura, bellb).
bellb 1vs I hear it singing (vocalising, v) before I see it (s).
bellb 1vsxm The sex is male (xm).
bellb m1vsxm I first see it mid-distance (m), 20—80 m away.
bellb mn1vsxm When I geotag my location, it's near (n) to me, within 5—20 m.
bellb mn_sw1vsxm It is to the southwest (sw). (In my shorthand, all directions start with an underscore _.)
bellb mn_sw1vsxmir I took a photo of it (i for image) and recorded its song (r).
bellb mn_sw1vsxmir! It was definitely a different bird (!) to another bellbird I saw earlier in the same survey period.
bellb mn_sw1vsxmir!(fed from sugar water feeder) Optional notes can be added in parentheses (()).
Male bellbird at sugar water feeder
I hear then see a male bellbird, first at mid-distance then near-distance, to the southwest of me, where it stops to feed from a sugar water feeder and I photograph it and record its song. Rather than write out that whole sentence, I can just write bellb mn_sw1vsxmir(fed from sugar water feeder).

I use a few other letters and keyboard characters to code for other important features of my observations.

bellb 1f "Flying by" is indicated with f, when placed after a count. "Flying by" means that it did not land and so did not make use of the local habitat.
bellb 1f_sw That can optionally have a flight direction, like circling (c) or one of 16 compass directions (e.g., southwest, sw).
bellb 1@ @ means I've re-sighted something that was definitely the same individual I previously already recorded in the same survey.
bellb 1@! @! means it may have been the same individual I recorded earlier, but I’m not sure. (If I'm not travelling, @! is assumed unless I add @ or !. If I am travelling, ! is assumed, unless I say otherwise.)
bellb 1?(or starling) ? means I was not 100% certain of my identification, in which case I usually add a note of what else it could have been, always a species name (common name or scientific name) prefaced by "or".
bellb 1xma*1j If two of the same species are together (within 20 m of each other), I combine them with an asterisk (*) on the same line. In this example, there's an adult male (xma) bellbird with a juvenile (j).
bellb 1v&1v If the observed individual is joined by another individual, or if I hear a second animal singing while the first is still singing, then I combine these observations with &. In this example, one singing bellbird was answered by a second bird.
bellb mon1f When I am travelling, I use l for left, r for right, and o for over. Features of the location always preface the count and features of the counted individual(s), like behaviour and sex, always come after the count. In this example, I was walking and a bellbird flew over (o), first seen mid (m) and geotagged near (n). Hence, mon.

I built a Filemaker Go app for my iPhone that automatically stores the time, date, and location for every one of these shorthand observations. I then import that file into my computer and everything gets automatically translated out into separate fields in my database.

That tech stuff is optional though. When I first started developing this shorthand, it was written on paper, as observations made along standard routes between timed landmarks. Writing down shorthand code like this was also the quickest way I’d found to do things with paper.

That’s introduced my count shorthand. But wait, there’s more!


A different kind of WildCounts shorthand is used to note the flowering phenology of some plants species. For the plants I watch, I record all of this season’s flowering stages currently present on the plant, and which stage is most abundant.

In the Wildcounts shorthand, semicolons separate the species name, the count information (which can use any of the count shorthand used above), and the flowering phenology information.

Here’s an example.

kowhai; n_sw1i$; fb-FL-im;

That’s a kowhai tree near to the southwest of me, with flower buds, mostly flowers, and some immature fruit. The capitalised FL means that flowering was the most common stage on the plant, and it also had flower buds (fb) and finished flowers/immature fruit (im).

The $ indicates that it was cultivated. The other options are $^ for “possibly cultivated” and ^ for “definitely wild” (wild is assumed when I don’t include any of these codes). As with my earlier bellbird example, the i in n_sw1i$ indicates that I made an image (photo).

kowhai flowers
A see a planted kowhai tree near to the southwest of me, with some flower buds, lots of active flowers, and some finished flowers, and I photograph it. To save time, I can write that observation in shorthand as kowhai; n_sw1i$; fb-FL-im;.

A third kind of WildCounts shorthand is reserved for roadkill.

Roadkill gets recorded as its state (one of intact int, exposed exp, squashed sq, decomposed decomp, fragment frag), its age (fresh, being the first sighting of a carcass <24 hours old, unsure, or old), and its location on the road relative to the direction I’m traveling (left l or right r grass g, verge v, or road r, and mid road mr).

Here’s an example.

hh rv old sq

That’s an old squashed hedgehog (hh) on the right verge of the road.

hedgehog roadkill
hh rv old sq, an an old squashed hedgehog roadkill, that's been painted over by the white road verge line.

Each line of WildCounts shorthand is always restricted to the observation of one species, at one place and time. The earlier example, bellb 1xma*1j, showed how to connect together different individuals of the same species when found at once. In this case, that was an adult male bellbird with a juvenile bellbird.

Associated observations of two different species can be connected using a separate connecting line. For example,

bellb n_sw1xma
*flo
kowhai; n_sw1$; fb-FL-im;

These are two observations, the first of an adult male bellbird, seen near to the southwest, and the second, of a cultivated kowhai tree that is flowering (and has flower buds and finished flowers/immature fruit). The bellbird is associated with (*) the kowhai tree as a flower visitor (fl) of (o) the kowhai tree. Hence *flo.

Interactions have a direction, specified by “of” (o) and “by” (b). In above example, the bellbird is a flower visitor of (o) the kowhai tree. The same interaction could have also been written with the species in the opposite order.

kowhai; n_sw1i$; fb-FL-im;
*flb
bellb n_sw1xma

In this case, the kowhai tree has flowers visited by (b) the bellbird. So it’s *flb and not *flo.

Male bellbird visiting kowhai flowers
A male bellbird visiting kowhai flowers. Note that we just say "visiting flowers", not "pollinating". Demonstrating that pollination is happening requires a lot more care. In this case, the bird is accessing nectar from holes in the base of the flowers without getting any pollen on its head, meaning that it's not pollinating these flowers. In kowhai flowers, those holes are often made by silvereyes and bumblebees. See iNaturalist for more on this observation.

Several interaction types are available, all of which are abbreviated by two letters. These are decomposition (de), epiphyte (ep), flower visit (fl), frugivory (fr), hemiparasitism (hp), herbivory (he), infection (in), parasitism (pa), parasitoid (pd), predation (pr), and seed predation (se). Pathogens are included in “infection””. For cases when the type of interaction isn’t clear, there’s also host (ht).

Note that these abbreviations are the first two letters of a word, except when two interaction types would otherwise have the same code (so only parasite is pa and parasitoid is instead be pd), or when that second letter is “o” or “b” (to reduce the chances of an unrecoverable typo).


I maintain a list of all my abbreviations for each of the species I regularly record. You’ve already seen that bellb is bellbird and hh is hedgehog. kowhai means Sophora species. That’s the genus, not a species, since cultivated kowhai can be a jumble of species and hybrids that can need detailed examination to identify to species.

For plant species that I count a lot, I often use the botanical six-letter code of the first three letters of the genus and species names. For example, I use SOPmic for Sophora microphylla, Canterbury’s native tree kowhai, which is easy to identify when it’s in wild places far from gardens.

Each species needs a short name that’s unique in your shorthand and is easy to remember and quick to type. Your short names don’t need to be universally unique, as they get expanded out to the full species name before the data is shared. It’s important to maintain an up-to-date list mapping each short name onto a full scientific name.


The WildCounts shorthand, plus my Filemaker Go WildCounts app that datetime-stamps and geotags each shorthand line, has allowed me to turn my life into one big transect. My counts are recorded in a combination of typed shorthand and spoken audio notes (which then need transcription, but that’s another method). This lets me average over 3,000 observations a week. I am now the stenographer of my local wild.

I imagine this might all seem a little overwhelming at first, but you don’t need to use all of the complexity, especially at first. What’s important is that it’s very fast to enter. Just like a court stenographer, I’ve been doing this for long enough that my fingers know it all and I can quickly enter in wild counts as I go.

To dive in to the complete WildCounts shorthand vocabulary, see wildcounts shorthand.


[8 Sept. 2021: I have R scripts that expand WildCounts shorthand into data in CSV and JSON formats. I’m working on cleaning them up for general use. Once I’m done, I’ll make them available on the site.]