Going Paperless: File Naming with TextExpander
Now that I have figured out my file naming convention I can get to one of my favourite parts: Making things EASY.
Easy means to me: No need to think and still get the perfect result. One way to achieve this is muscle memory. Can you remember the times when you right-klicked with your mouse to open a context menu, selected the copy entry and… Well – didn’t cmd-c / cmd-v feel sooo much better? With TextExpander I can build the same kind of muscle memory for standardised text snippets. Applying this to file naming standards is only logical.
Here’s my file naming convention again (if you wonder why it looks that way, read here):
TYPE – YYYYMM – Description (explanatory word) – A00.pdf
(The versioning part at the end shall be optional.)
I’m not going to explain TextExpander as an application because Don McAllister has already covered it in several of his excellent screencasts. What I’ll do instead is just explain how I practically use TextExpander to name files in a consistent way without thinking (too much).
I found there are mainly 2 ways of using TextExpander for this.
Option 1: The 4 Single Snippets
Build 4 single snippets covering the 4 parts of the file name. Seemed obvious – but didn’t feel fluent enough when I actually handled it. No worries, there’s a better way:
Option 2: My File Naming Monster Snippet
I built a single snippet that covers the entire file name for every type of file and every variant (versioning / no versioning, etc.) following my naming convention. Here we go:
%fillpopup:name=TYPE:default=ARTWORK:CONTRACT:CORRESPONDENCE:DOCUMENT:INVOICE:ORDER:RECEIPT:REFERENCE% – %Y%m – %filltext:name=Who What (detail):width=30%
Looks terrible, right? That’s why I call it Monster - and I love it. I tell you what: Go into TextExpander on your Mac, add a new snippet, just copy and paste the string above and give it a try. Here’s how it would look for scanned masterpiece drawings of my daughter if she could handle crayons already other than trying to eat them ;-)

You see the first part of the snippet - %fillpopup:name=TYPE:default=ARTWORK:(…) - creates the dropdown menu with all the entries for each of the document types I think I’ll have in my paperless system. If I’ choose these so that they start with different characters, I can even select them with just pressing that character instead of arrowing down… Creating flow…
The second part - %Y%m - inserts the current year and month in a sorting-friendly manner.
The third part - %filltext:name=Who What (detail):width=30% – gives me a 1 line text entry field that is 30 characters wide. Because I named that field “Who What (detail)” the snippet reminds me of the convention that I have chosen for this descriptive part of the file name. This will help me get a bit of systematic even into the free text field. Yes, it’s taken me a while to accept myself as just being that way…
I can manoeuvre through the snippet using the TAB key and apply my input hitting RETURN.
Ah – the versioning part!
Version numbers can be really helpful. Depending on the software I use and the circumstances. But – I don’t need version numbers on every file. TextExpander does support optional texts. But – honestly – looking at a 3 digit thing that I need rather rarely – I decided to not overdo it.
I found that’s a good decision because: Once I hit return after entering the file name description part, TextExpander applies my input to the file name and takes me back into the Finder – AND – the file name remains in modification mode with the cursor nicely positioned at the end of the file name. Perfect because now I can simply add a document version when I need it or just hit another RETURN if I don’t.
The date thing
I know I’ll sometimes come across a file that will be a month old before I pick it up from my action folder and name it properly. Maybe even two months – hopefully in rare occasions. More often might I want not only the year and month but also a day to be included in the file name – the artwork example above would be such a critical case…
There’s a better way to handle this than manually going into the filename after creating it, arrowing towards the date stamp and then correcting / adding numbers. I simply duplicated the TextExpander snippet in my library, changed the date stamp to my anticipated requirements and saved each snippet to a slightly amended shortcut.
Here are the ones that I use:
-fn = the “standard” file name snippet as shown above
-fn1 = with date stamp corrected by subtracting 1 month : replace date part with %Y%@-1M%m
-fn2 = with date stamp corrected by subtracting 2 months : replace date part with %Y%@-2M%m
-fnd = with date stamp including a 2-digit day : amend the original date part with %d
That’s it. My file naming convention realised with TextExpander. Another reason why the maker of that fine piece of code (Smile Software) in my eyes has earned every right to lead their company name :-)
So what’s next in my paperless project? I guess I want to play with Hazel. Just as good.
Stay tuned.


The reason for starting all these snippets with a dash is that I use really a lot of snippets in different scenarios. Another one is OmniFocus as my digital GTD brain. Yet another one is of course all sorts of shortcuts for web addresses, ID numbers, etc. Because I have so many snippets there is a risk of the shortcuts conflicting and hence becoming longer. I avoid that by putting different characters in front of the mentioned subsets of my snippets. Everything around file management has a dash.
Great post.
I tried this but get an error from the Finder when I try to rename a file (as opposed to opening the file and re-saving it).
The error is:
You can’t use a name that begins with a dot “.”, because these names are reserved for the system. Please choose another name.
Seems like the Finder is trying to save the filename as just .ext (the dot and extension) at the moment that the TextExpander dialog pops up.
Has anyone run into this? Any suggestions? Thanks!
Thanks Elliot! I don’t have a Mac at hand right now but my guess is: After you hit return once to apply the snippet be sure to hit another return to actually apply the file name change.
Does that help?
Chris
(If you hit esc or tab or arrow down etc the new file name does not get applied and the “name” will only contain the separation dot and the extension. Hence OS-X will think the file starts with a dot (=system file) and ask you as described.)
Great post!