This Week's Sponsor:

Listen Later

Listen to Articles as Podcasts


TextTool: Text Manipulation On iOS

TextTool

TextTool

It used to be that, to do nerd stuff, you had to get a Mac or PC. As iOS progressed over the years, however, developers saw that users were spending a lot of time trying to do work on their iPhones and iPads, and started building utilities that packed powerful functionalities in what looked like “just an app”. We got Drafts and Launch Center Pro, calendar apps and password managers just as powerful as their desktop counterparts, and, of course, apps to script iOS and a text editor with its own workflow system. To sum up: iOS is still maturing, but there’s no shortage of nerdy apps and utilities at this point.

iOS is great for quick text entry thanks to the portability of an iPhone or iPad mini, but doing advanced text manipulation is a bit tricky unless you want to get dirty with Editorial and Python scripts. On the Mac, it’s easy to fire up Automator and create a workflow that takes a line of text and turns it Into Title Case or UPPERCASE; even going the extra mile and building services to take selected text and indent it or swap spaces with tabs takes a few minutes, but it’s doable with a basic knowledge of built-in OS X tools. On iOS? There’s no Automator (yet?), so, until today, if you wanted to do automated text transformations you’d have to get Editorial and Pythonista or use some of Launch Center Pro’s (limited) text filters.

Craig Pearlman noticed this problem and built TextTool, a $4.99 Universal app that comes with 28 built-in text transformations that you can use inside the app’s text editor or chain to other iOS apps with URL schemes and workflows.

TextTool’s selection of text transformation methods include common actions like prefix, encode, and change case, as well as more peculiar filters like regex, educate (for smart quotes and hyphens), trim, wrap, and dedupe. A full list is available here, and the app comes with well written documentation.

The app is straightforward and pragmatic: at the bottom, you’ll find buttons to open the settings (where you can switch between variable-width and fixed-width fonts), character/word/line counts, buttons to share text and create a new note, and the action button. TextTool’s text editor is a plain text entry field that accepts inline transformations…and that’s it. There is no note management or archive, and everything happens “live” on screen with no options to retrieve old drafts or modifications (you can shake to Undo, though).

TextTool

TextTool

Actions are listed as colored circles that reflect through the iOS 7 keyboard and sit underneath the text editor. Tap an action, and text is transformed accordingly in the editor above; if an action has multiple options to choose from (such as Case), a popup will come up asking you to choose a version of the action you want to run.

TextTool is useful on its own, but it truly shines when combined with the apps and workflows you already use and rely upon. Say, for instance, that you want to turn a list of lines into a Markdown list, with each line prefixed by an asterisk: normally, you’d either type the asterisks manually or use an Editorial workflow to take selected text and turn it into a Markdown list with one tap. But maybe you don’t want to type things manually and you’re not fancy enough to use Editorial. In that case, behold the TextTool URL scheme used in a Drafts action:

texttool://x-callback-url/transform?text=[[draft]]&method=affix&prefix=%2A%20&suffix=&scope=lines&x-success={{drafts://x-callback-url/create?text=[[output]]}}

TextTool

TextTool

That thing above? It’s a URL action for Drafts that takes your lines and prefixes them with an asterisk and a space (as Markdown requires), automatically returning to Drafts and showing you transformed lines. In the workflow, TextTool receives text and the URL scheme tells it to run the affix method with a prefix and an empty suffix, using x-callback-url to go back to Drafts with a new [[output]]. Apps these days…

How about encoding text? Everybody loves encoding text.1 Here’s another Drafts action to send some text to TextTool and receive the encoded version of it:

texttool://x-callback-url/transform?text=[[draft]]&method=encode&x-success={{drafts://x-callback-url/create?text=[[output]]}}

You may probably be wondering why JavaScript hasn’t made an appearance in this post yet. My bad, here’s a bookmarklet to prefix the currently open webpage with “New post - ”. If you have a blog and you always find yourself typing tweets with “New post - ” followed by your article’s name and URL manually, well, now you can thank Craig Pearlman for thinking of you.

javascript:window.location='texttool://x-callback-url/transform?text='+encodeURIComponent(document.title+'%20')+encodeURIComponent(location.href)+'&method=affix&prefix=New%20post%20-%20&suffix=&scope=lines'

TextTool

TextTool

You can install the code above as a bookmarklet in Safari and you’ll end up with a prefix before the webpage’s title and URL in TextTool. If you don’t like my prefix, change the (encoded) text between &prefix= and &suffix= to whatever you prefer.

I could go on with at least 14 other actions I have in mind for TextTool and integration with Pythonista, Editorial, Drafts, Launch Center, and Safari, but I’ll let you have some fun, too. TextTool comes with a solid x-callback-url documentation on the web and inside the app, so make sure to peruse that if you want to craft workflows for your needs.

TextTool is a handy, delightfully geeky, powerful iOS utility that does one thing well without forcing you to use Python or learn a URL scheme. You can go deeper and chain TextTool with apps and scripts, but you don’t have to because the app can simply be used to paste text, transform it, copy it, and go back to doing something else. There are some bugs that I’d like to see fixed2, but the sweet addition of shortcuts for external keyboards compensates for those on the iPad.

TextTool is well worth $4.99 and I can’t wait to see what iOS geeks will do with it. Get it on the App Store.


  1. This is sarcasm. ↩︎

  2. Interestingly, they all seem to occur in the text field. Where by “interestingly” I mean that it doesn’t come as a surprise considering the bugs and general weirdness that iOS 7 still exhibits in text views and fields (and that developers have to work around to avoid bugs when possible). ↩︎

Unlock More with Club MacStories

Founded in 2015, Club MacStories has delivered exclusive content every week for over six years.

In that time, members have enjoyed nearly 400 weekly and monthly newsletters packed with more of your favorite MacStories writing as well as Club-only podcasts, eBooks, discounts on apps, icons, and services. Join today, and you’ll get everything new that we publish every week, plus access to our entire archive of back issues and downloadable perks.

The Club expanded in 2021 with Club MacStories+ and Club Premier. Club MacStories+ members enjoy even more exclusive stories, a vibrant Discord community, a rotating roster of app discounts, and more. And, with Club Premier, you get everything we offer at every Club level plus an extended, ad-free version of our podcast AppStories that is delivered early each week in high-bitrate audio.

Choose the Club plan that’s right for you:

  • Club MacStories: Weekly and monthly newsletters via email and the web that are brimming with app collections, tips, automation workflows, longform writing, a Club-only podcast, periodic giveaways, and more;
  • Club MacStories+: Everything that Club MacStories offers, plus exclusive content like Federico’s Automation Academy and John’s Macintosh Desktop Experience, a powerful web app for searching and exploring over 6 years of content and creating custom RSS feeds of Club content, an active Discord community, and a rotating collection of discounts, and more;
  • Club Premier: Everything in from our other plans and AppStories+, an extended version of our flagship podcast that’s delivered early, ad-free, and in high-bitrate audio.