Project Tours: Meme Type

Table of contents:


Do you like to be sarcastic on the internet? Are you tired of having hold or release the shift key with every letter while you’re mocking someone? Are you obsessed with making your writing as unintelligible as possible? Well, I’ve got an app for you!

Meme Type is an angular web app that performs text transforms of various internet typing formats. The live app is running here. View the project on Github here.

I was inspired to make this project while reading Because Internet by Gretchen McCulloch. In her book, McCulloch breaks down many online linguistic contructs, often taking an almost algorithmic approach. When I read her detailed analysis of keysmashing in the first few pages of the book, I knew I had to make this app.

Notable conversions


In the aforementioned Because Internet, McCulloch lays out a set of observed patterns of keysmashing. I’ve listed a few of these patterns below:

  • Almost always begins with “a”
  • Often begins with “asdf”
  • Other common subsequent characters are g, h, j, k, l, and ;, but less often in that order, and often alternating or repeating within this second group
  • Frequently occurring characters are the “home row” of the keys that the fingers are on in rest position, suggesting that key-smashers are also touch typists

My keysmash algorithm is inspired by these patterns, and thus uses to following rules to convert an input string to keysmashing:

Student athlete mode

Student athlete mode follows a post style about fitness, grinding, being better than everyone else, and using way too many emojis. See examples of this format on Know Your Meme.

In its current implementation, there are three ways in which an emoji will be added to a string:

  1. If the text is an exact match of the name of an emoji, it will include that emoji.
  2. If the text is an exact match of a keyword of an emoji, then it will randomly select from among the emoji that contain that keyword.
  3. If the text does not match an emoji, then there is a probabilistic chance of it selecting randomly from a set of emoji that are commonly used in this format. When this occurs, the emoji will have a chance to be repeated up to a total length of three.


Meme Type is hosted using a combination of AWS S3, Cloudfront, and and Route53. For more info on how I use AWS to run my websites, see this post about the technical details of my blog.

Planned changes

Once the student athlete mode upgrades are finished, I plan on pulling all of my conversion functions into a separate npm package to make them easier to integrate into future projects. Possible implementations of that package could include similar conversion tools or bots for social media and chat platforms.


If you have comments or questions, see the contact info on the about page.

Share this post: