Mad Labs Dev Blog

Make Smart Games.


App Store Optimization (ASO): Selecting the Right Keywords (Part 3)

In the previous two posts of this App Store Optimization (ASO) Series, we have described how to identify relevant keywords for your app and introduced an easy to follow keyword selection guide to optimize App Store search rankings. As a reminder, our iterative keyword selection process looks like this:

  1. Select relevant keywords
  2. Get keyword characteristics (difficulty and traffic)
  3. Select by difficulty
  4. Optimize traffic

Following these simple steps should already help you compose a solid keyword list, so you won't have to guess your keywords any more. In this final part of our ASO series we introduce our own multi-factor scoring model, which should take your keyword selection skills to the next level.


1. Introducing a Multi-Factor Scoring Model

The iterative keyword selection approach is very simple, quick to apply and should already increase your keylist quality. A major drawback of this approach, however, is its iterative nature.

  • In each iteration step you will eliminate potential keywords and narrow down the list of potential candidates. If you end up with too few keywords, you will have to re-adjust your thresholds and redo the entire selection (e.g. first delete all keys with a difficulty above value X, then delete all keys with a key length above Y, and then delete all keys with a traffic below Z)
  • Order matters. You will get different results depending on which selection steps you do first. Whenever you extend the iterative process with further "filtering" steps (like keyword length), you will have to decide carefully at which stage you apply that additional filter step

Let's assume that you can choose any of the following keywords for your keyword list (max length 35 chars): keys All five keywords have pretty similar difficulties, but two have much higher search volumes. With our iterative approach we would select the three easiest keywords ("multiplication,addition,calculation", char length = 35). In our final iteration step we might decide to switch "calculation" with "practice", because of the similar difficulties and the much higher traffic of "practice" (in addition "practice" can be combined with "multiplication" and "addition"). The resulting keylist "multiplication,addition,practice" is only 29 chars long, so you could even add in "math" to fill up the list.

This would be a discretionary decision, though, in contrast to a rule-based decision. Would you be able to replicate this decision in the future? Would other keyword combinations be even more successful? Each discretionary, not rule-based decision makes it difficult to gauge the long term success of your keyword selection algorithm, because such decisions are subjective and depend heavily on your current state of mind. Wouldn't it be much better to rely on a robust model?

Now let's assume that you would also want to incorporate the keyword length as an evaluation factor. Will you delete very long keywords from your pool right at the beginning? With this approach you are running the risk of deleting keywords that have high search volume/ low difficulty without even considering them. At the same time you may be able to replace one very long keyword with two shorter keywords (like in the example above, where we replaced "multiplication" with "practice" and "math"). There are many different possible keyword combinations, evaluating all of these different possibilities with the iterative approach is not feasible, though.

You are always optimizing your keylist under certain restrictions and each change will lead to a different overall keylist quality. Using the iterative approach will not allow you to efficiently compare and evaluate the quality of different keyword combinations, because each selection takes time and requires manual work. In addition, the iterative approach is not very robust, because the slightest change in the order of the selection steps may lead to completely different results. That's why we decided to use a multi-factor scoring model.

The benefits of our model:

  • Each keyword list has an aggregated quality score, so all keylists are directly comparable
  • The model is easily extendable to incorporate new evaluation factors (hence, highly customizable)
  • The model is robust and delivers the same results independent of the evaluation order
  • The selection process is rule-based and can be automated to reduce human interaction (avoid discretionary decisions)
  • The model is easily adjustable to account for changing circumstances during the evolution of your app (i.e. it is easy to change the influence of different factors on the keylist score)

Using an iterative approach as described earlier may not lead to the best possible keyword list, because in the first iteration step (i.e. sorting by difficulty), you may already eliminate keywords that would potentially lead to a higher overall score in combination with other keywords (keywords with very similar difficulty values, but varying length/traffic/etc). It is therefore much better to use a multi-factor scoring model.


2. Model Framework

In our multi-factor scoring model we will need to calculate a quality score for each keyword. The quality score will depend on a variety of different factors that are relevant for your search rankings (e.g. difficulty and traffic). Each of the selected factors will have a factor weight, which determines the impact of each factor on the quality score of a keyword. The overall quality score of a keyword list is then calculated as the sum of the individual keyword quality scores.


2.1 Keyword Quality Score

The quality score of a keyword i will be calculated as the weighted sum over all factor scores according to the following formula:

(2.1) keyScore_{i} = w_{1} \cdot factor_{1,i} + w_{2} \cdot factor_{2,i} + ... + w_{n} \cdot factor_{n,i} ,

where w_{a} is the weight of factor a, a\in\left\{1,...,n\right\} with n factors, for keyword i in the keyword pool.


2.2 Model Factors

In general, you can include as many factors in your model as you prefer. Some factors may make more sense than others. Here is a list of different factors that will influence the quality score of your keyword

  • Keyword relevance
  • Keyword difficulty
  • Keyword traffic
  • Length of keyword (measured in chars)
  • Total number of apps using a keyword (which is likely already used to calculate keyword difficulty, depending on your ASO tool)
  • Word frequency within a sample (how often does a word occur in a set of sample texts, e.g. Word Frequency Data)

For each keyword you will also have to determine individual factor scores. We would suggest to normalize the score of each factor to be in a range between 0 and 10 (with 0=worst and 10=best) to make all values comparable, e.g.


Another advantage of normalizing values between 0 and 10 (worst to best) is that your keylist scores (which are the weighted sums over the individual keyword scores) will be easily comparable and you can choose the keylist with the highest overall score.


2.3 Factor Weights

In addition to determining the relevant factors of your model, you will have to assign weights to each factor. The higher the weight of a single factor, the larger the influence of that factor on the quality score of a keyword.

As discussed in our previous posts, the difficulty of a keyword is one of the most important selection criteria, especially if you have no App Store exposure, yet. Assuming your app has low exposure, no download momentum and few reviews, the difficulty of a key should have by far the largest impact on the keyword score (i.e. a factor weight above 50%). Traffic, on the other hand, is secondary to difficulty and should have a smaller impact (i.e. a factor weight below 50%).

This general rule, however, holds only true until your app becomes more successful. With the evolution and hopefully increasing exposure of your app, the factor weights need to change accordingly. If you have released the next Flappy Bird and rank in the top charts, it would make no sense to target low difficulty keywords, because these keys generally tend to have lower traffic. Instead, you should focus on high traffic words. As pointed out earlier, each app iteration gives you the opportunity to adjust your model. Always keep in mind that you are looking at a dynamic model, not a static one.


2.4 Keylist Quality Score

The overall quality score of a keyword list j is calculated as the weighted sum over all keyword quality scores

(2.2) keyListScore_{j}=\frac{1}{m}\sum_{i=1}^{m}(keyScore_{i}) ,

where keyScore_{i} is the quality score of keyword i as calculated in (2.1), i\in\left\{1,...,m\right\}, with m keywords inside of keyword list j, for keyword list j in the set of potential keyword lists L.

This formula allows you to calculate the aggregated quality score of any combination of keywords (i.e. a keyword list). If you come up with ten different keyword lists, you can now easily calculate and compare their aggregated quality scores. The higher the aggregated quality score of a keyword list, the higher the probability that this keyword list will lead to better overall search rankings.

If you choose your model factors wisely and correctly calibrate your model, you now have a very powerful framework to quickly calculate, compare and select keyword lists. The model is easily extendable by introducing new factors with their corresponding factor weights and free of discretionary decisions. If you are as lazy as we are, you can even write a script to automate the selection process of your keywords. This will save you a lot of time that you can spend on improving your app!


3. A Simple Two-Factor Model Example

In a simple two-factor model with the factors difficulty and traffic the keyword quality score simplifies to

(3.1) keyScore_{i} = w_{difficulty} \cdot difficulty_{i} + w_{traffic} \cdot traffic_{i} ,

where w_{difficulty} and w_{traffic} are the factor weights, and difficulty_{i} and traffic_{i} are the keyword specific difficulty and traffic values.

The aggregated quality score of a keyword list is then calculated as

(3.2) keyListScore_{j}=\frac{1}{m}\sum_{i=1}^{m}(w_{difficulty} \cdot difficulty_{i} + w_{traffic} \cdot traffic_{i}) .

Let's assume that our keyword pool only consists of four keys (add, subtract, multiply, divide), our keyword list must be smaller than 15 chars, and we will assign 70% weight to the difficulty factor (30% to traffic). Our keys have the following characteristics:


We can then calculate the aggregated quality score of each potential keyword list (which is a permutation of all keywords with less than 15 chars, not considering single-word keyword lists):

(3.3) keyListScore_{j}=\frac{1}{2}\sum_{i=1}^{2}(0.7 \cdot difficulty_{i} + 0.3 \cdot traffic_{i}) .

UnbenanntThe quality score for the first keylist, as an example, is calculated as:

keyScore_{add} = 0.7*8 + 0.3*7 = 7.7

keyScore_{subtract} = 0.7*7 + 0.3*7 = 7

keyListScore_{add,subtract} = 0.5 * (7.7 + 7) = 7.35

In this simple example we would choose the keylist "add,subtract", because it satisfies the keylength restriction and has the highest overall quality score.


4. How We Select Our Keys

If you are curious of how we come up with our final keyword list, here is a rough outline of our process:

  1. We create a pool of relevant keywords (as described in part 1 of this series)
  2. We download keyword characteristics for all of your model factors (e.g. difficulty and traffic values)
  3. We normalize all values to be in a range between 0 and 10 (from worst to best)
  4. We delete all keywords with zero traffic
  5. We run a difficulty screen on our keyword pool. As described in part 2 of this series, we drop out all keywords with too high difficulty values (i.e. only take keywords in the first two difficulty brackets "target" and "intermediate", depending on the size of our pool)
  6. We calculate individual keyword quality scores for all remaining keywords in the pool according to formula 2.1
  7. We create a pool of keyword lists L. The pool of keyword lists consists of all keyword permutations (comma separated) that have a char length below 100 chars (and are not too short, because we want to use up as much space in the keylist as possible)
  8. We calculate the aggregated keylist quality score for each keyword list in our pool L according to formula 2.3
  9. We select the keyword list with the highest overall quality score

Our model takes into account a variety of different model factors such as difficulty, traffic or keyword length and we determine the factor weights according to past search ranking performance of our keys.


4.1 Model-Extension: Keyword Combinations

As we have pointed out in a previous post, keyword combinations count as well. Some keywords may be combined with other keywords to form new combined search strings. These combined search strings may also have desirable characteristics. Some people, for example, may not only search for "math", but more specifically for "math practice". Because the keyword "practice" can be combined with many other keys (such as "division practice", "addition practice", etc.), it makes sense to account for the added value of keyword combinations.

If our keyword list consists of the keywords "math,practice,addition", we would analyze the added vaue of the following word permutations: "math practice", "math addition", "practice math", "practice addition", "addition math" and "addition practice". For each keyword list we will compute all dual word permutations. For these word permutations we will download keyword characteristics such as difficulty and traffic. It is important to point out that the word order matters, e.g. the search strings "math practice" and "practice math" have different characteristics.

If a word permutation makes absolutely no sense (like "teacher addition"), its traffic value should equal zero. Because nonsense permutations will generate no added-value for our keyword list, we will delete all combinations with zero search traffic. Next, we calculate the quality score of each permutation analogously to formula 2.1 (permutationScore_{x} ). In a final step, we compute the overall added value of all permutations for a keyword list j as

(4.1) addedValueOfPerm_{j}=\frac{1}{p}\sum_{i=1}^{p}(permutationScore_{x}) ,

with p number of dual word permutations in keyword list j, where x is any dual keyword permutation out of the current keyword list j. The extended keylist score is then equal to the sum

(4.2) keyListScore_{ext,j}=keyListScore_{j}+addedValueOfPerm_{j} .


Wrapping it up

In this final part of our ASO series we have introduced our own dynamic multi-factor scoring model and outlined how we select our keywords. The model has multiple advantages over a simple iterative selection process and should help you find the ultimate keyword list to boost your App Store search rankings and download numbers.

Even though the model might look complicated at first, once implemented, it is easy to maintain and extend. Our model framework allows you to objectively measure the success of any changes you make to your model, because it is free of discretionary and subjective decisions (as long you follow the framework, of course ;).

As with any ASO technique, it is extremely important to adjust your model over the evolution of your app and to react to changes in the App Store environment. Always remember that ASO is a continuous process and takes time. With our framework, however, we have laid the groundwork to minimize the time you spent selecting your keywords. So in the future, you can hopefully spend less time on ASO and more time on improving your app

If you have any questions or would like to discuss our approach, please feel free to contact us at or leave us a comment below!

Good luck with your ASO endeavours!


A Comprehensive Indie Game Marketing Guide - Overview

So we created and released a math learning game called Blackboard Madness: Math.

After two years of hard work, we want to get our game into the hands of as many people as possible. But that means we have to work on another big chunk of stuff. Screenshots, trailers, a landing page, social media and press work need to get done. Google is our friend (and yours, too!) and has served us many interesting resources. But only reading about how to market an indie game with all the tasks involved is not enough. You have to actually DO all of those tasks (and requires continuous work) ;)

This is supposed to become a comprehensive guide on marketing your indie game (or app). We divided it into a series of blog posts. We'll elaborate on how to market and position an app. Additionally, we'll give you some insights into the process of our (ongoing) marketing strategy for Blackboard Madness: Math.

Outline of Series:
1. Landing Page
2. Social Media Marketing
3. PR Materials: Trailers & Screenshots
4. Press Releases
5. Press List
6. Dev Blog

Why this order? Because this was the order we marketed BBM: Math. Maybe we should have done it differently, maybe not - it's hard to tell, but make sure you have a solid marketing strategy.

Since this is supposed to be an introductory post, I would like to talk about some general facts and numbers on game development, or rather indie iOS game development.

Emmy Jonassen aka "indiegamergirl" said in her talk at Konsoll 2013 that "95% of all apps/games are not profitable" and "80% are operating at a loss".

Now that's not a very promising outlook, if you plan to live of app or game development. Let's also take into account that the App Store has a library of 1,200,000 apps, according to Tim Cook at the WWDC Keynote in June 2, 2014. You see where I want to go with this? Your app has to stand out of 1,200,000 other apps!

Let's have a look at the following two charts (data according to Pocket Gamer).

Evolution ios AppsAvg Apps per Day
In July 2008 a total of around 1000 apps were submitted to the Apple App Store, which translates to an average of 32 apps per day. Well, in May 2014 already 46,000 apps were submitted to the Apple App Store, around 1,500 per day. That's impressive (for Apple), but may be discouraging for new app developers.

You can also see that the inclination of the linear trend line for app submissions is much steeper than for game submissions. So the good news is that, if you are in game development like us, the submission rate is not as quickly accelerating. The bad news, the games category accounts for almost 20% of all apps, while other categories account for far less (see Application Category Distribution). The photography category, for example, only accounts for around 0.07% of all apps, so the games category is by far the most competitive! It may therefore be a good idea to think about your niche first, before jumping right into the development of your next idea.


But how can your potential users or customers find your app?

You need marketing and believe me, this part is enough work to get (at least) another person busy (full-time). Ok, this may sound like an understatement when considering AAA titles. They spend A LOT on marketing (in terms of time and budget). Think of Clash of Clans (I can only speak of Germany: TV Ads, even TV Ads in the half-time break of 2014 FIFA World Cup matches). Yes, that's expensive and requires a thorough marketing plan. The good thing is, you can get noticed without a TV Ad. Take Frogmind with their title BADLAND, as an example. They created quite some buzz before releasing the game by releasing game art, game trailers and so on. See Frogmind cofounder Johannes Vuorinen in his talk at GDC on what they did.

To be realistic, chances are pretty high that you won't make it with your game or app (even if it is well designed and makes fun/ solves a problem). If nobody cares about your game, even a 500 million marketing budget won't help you. But my goal here is to motivate you and show you some "easy", yet important steps to get you started with marketing. It takes some time and you will have to re-iterate some things down the road, but at least at no cost (excluding your work time). So if you're not thinking about hiring, roll up your sleeves and get to work!

Marketing is not a magic potion, but it will increase your odds of being discovered and becoming successful.

For now, let's get started with registering domain names for your landing page(s) and creating accounts on Facebook, Twitter and Linkedin (there are tons of other social media sites like Google+ or Pinterest, but we would suggest to focus on these for the moment).

The next post will talk about Landing Pages, so stay tuned folks!


App Store Optimization (ASO): Selecting the Right Keywords (Part 2)

In the first part of this series we have described how to find relevant keywords for your app and target audience. You should have a pool of potential keyword candidates and their corresponding keyword properties (traffic and difficulty). Now it's time to start with the actual selection process. To get you started (and not scared off), this post presents an easy-to-follow and hands-on guide on creating a solid keyword list. All the hard preparation work will now pay off!


2. Select your keywords wisely

The Apple App Store limits the total length of your keyword list to 100 characters (separated by commas). It is therefore very important to decide which keywords to include and which to drop out. Our ultimate goal is to select those keywords from our keyword pool that will most likely lead to actual downloads of our app. The ideal outcome for each keyword would equate to:

(High Relevance) + (Appropriate Difficulty) + (Some Traffic) = Increased Downloads

We have already identified highly relevant keywords, so the remaining pieces of the equation revolve around difficulty and traffic.

  • Appropriate Difficulty: We need to target keywords that are not too difficult to rank for, otherwise we have basically no visibility in search rankings. Remember, we are not Angry Birds (yet)!
  • Some Traffic: We need keywords that have some search volume, otherwise we have wasted precious space in our keyword list. No volume equals no downloads.

We generally have two options at this stage, either select our keywords by traffic or by difficulty. So which keywords should we choose? The intuitive answer may be to select the keywords with the highest traffic numbers. For a math game it may therefore seem obvious to include the keyword “game”, which has the following characteristics: figure07

As you can see the keyword has a very high search volume, but also a tough difficulty value. You may be inclined to think that high traffic keywords are a good target. If your app ends up getting only a fraction of that high traffic, you should already see some good download figures (e.g. if you get 1% of the traffic of 100,000 search queries per day, assuming a 10% conversion rate, you end up with 100 downloads for that key). But a keyword with such characteristics (high traffic, high difficulty) will put you into direct competition to all the Angry Birds in the app store. If your app is new to the market and you have no real exposure yet, it is very unlikely that a difficult keyword will lead to any downloads at all. The more difficult a keyword is, the harder it will be for your app to rank in the top spots. Who will have the patience to scroll down to rank #661 to discover your app in the search results? You should generally try to appear on the first or second page of the search results. Ranking outside of the Top 10 for a keyword will already decrease your chances of being discovered and downloaded considerably! Instead of focusing on keyword traffic, it is therefore much more important to focus on keyword difficulty (i.e. traffic is secondary to difficulty).


2.1 Select your keywords by difficulty

Assuming that this is your first game and you have no real exposure, you should consider using keywords with the lowest difficulty scores (all keywords in your current list should be relevant to your app and have a traffic > 0 by now). So go ahead and sort your keywords by their difficulty scores (from easiest to hardest) and then select the ones with the lowest values, i.e. easiest to rank for.

Note that your actual ranking for a specific keyword will depend on many different factors and not only on its difficulty (which is just a theoretical value calculated by your ASO tool based on some assumptions of the app store ranking algorithm). So a low difficulty score will not automatically guarantee a high ranking. The app store ranking algorithm is essentially a black box and some or all of the following factors may influence your resulting ranking:

  • Number of total downloads (current version/ previous versions)
  • Download momentum (acceleration/ decceleration of download rate)
  • Number of Reviews (positive vs. negative, current/previous)
  • App usage/ user engagement (how often and how long is your app used)
  • Discard rate (how often and how quickly is your app deleted)
  • Click/ Download rate (how often is your app clicked/ downloaded in the search results)
  • etc.

As a general rule of thumb you want to rank in the top 10 for all of your keywords (that have traffic). This requires a lot of testing and re-evaluation, so don’t expect to achieve top ranks in your first app submission for all of your keywords (we didn’t). ASO takes time, requires continuous monitoring, regular adjustments and is an evolving process. Additionally, app store providers change their algorithm from time to time, so it is important to react on changes and stay on top. Choosing highly relevant, low difficulty keywords that have at least some search volume is your best initial guess. With each app iteration and evaluation of your keyword list, you will get a better picture of your target difficulty values. So don't give up after your first submission and keep testing!


2.2 Difficulty Brackets

If your app is already up and running, you should analyse the rankings of your current keyword list. Ideally, you will start monitoring the values over time. This information is very valuable and will help you in your decision process. Knowing your keyword rankings (in combination with other determinants like downloads, ratings, etc.) will help you target the right difficulty range in your next release.

Let's look at the following sample values: Screen Shot 2014-06-27 at 20.50.56

You can immediately see that this app is ranking poorly on many of the selected keywords, but ranks in the top 10 for a few others. As you might have guessed, this list needs some serious optimization, but the stats will help you make the right choices for your next update. We therefore determine difficulty brackets to see which keywords we want to target. The current rankings and difficulties are our best estimate of future rankings.

By looking at the sample values we have identified the following difficulty brackets:

  • Target Difficulty [Difficulty <= 2 and Rank <= 10]: These are your top picks. You have a realistic chance to score in the top 10 for similarly difficult keywords.
  • Intermediate Difficulty [2 < Difficulty <= 4 and 10 < Rank <= 30]: This is your extension list. If you cannot identify enough keywords with a target difficulty, you can fill up your list with these keys.
  • Out-Of-Your-League Difficulty [Difficulty > 4 and Rank > 30]:This will be your exclusion list. You probably have no chance to rank anywhere near the top charts, so forget about targeting these for now.

You should try to exclusively select keywords from the target bracket and disregard all other keys. In case you should not have enough keywords with a target value, you have two choices:

  1. You can extend your pool to include keys from the intermediate bracket. This is the faster approach, but will lower the overall quality of your keywords list (as the average estimated ranking will decrease).
  2. You can keep searching for more relevant keywords that have a target difficulty value (which means going back to Part 1). This will ensure a high quality, but will will take much more time.

In general, you should never include keywords that are out-of-your-league in your keyword list. You could, however, include very important, highly difficult keywords in your app title (we decided to include "math" in our title, for example). Keep in mind that this will be a trade-off between brand recognition and ASO. So try to avoid including too many keys in your title.

In addition to analyzing ranking, difficulty and traffic of your current keywords, you could also look at download numbers, ratings, etc. to better understand under which circumstances your app has achieved these rankings (as mentioned earlier, other factors will also influence your ranking).

As a good practice going forward, you should start to track your keyword rankings as soon as your app has been accepted. This will allow you to determine the average difficulty value needed to catapult you into the top charts. As your reviews, downloads, rankings, etc. will change over time, so will your keyword rankings and the difficulty brackets. It is therefore important to constantly re-evaluate your keyword list. Otherwise you may miss some key opportunities.


2.3 Traffic is king

So far we did not pay much attention to the traffic value and have focused on difficulty. Traffic is without a doubt very important (no traffic = no downloads). But as long as your app is flying under the radar, the difficulty value is much more important. The traffic value is particularly useful, if you have to decide between similarly difficult, but competing keywords (more potential candidates than slots). In case you have to choose between multiple keywords with pretty much the same characteristics (similar difficulty, keyword length, relevance, etc.), traffic will be king.

Let's say you have only one more available spot in your keyword list, but three potential keywords to choose from. All three keywords will fit into your list. They are highly relevant to your app, have identical difficulty scores, but different traffic values. In such cases, you should always choose the keyword with the highest traffic, because that keyword will most likely generate more downloads. But always remember, traffic is secondary to difficulty (except if you are super successful and can target the most difficult keys anyways). So before looking at the traffic value, make sure to only select keywords that will potentially rank you in the top ten!


3. Further considerations

  • Space is precious (Apple limits your keylist to 100 chars, including delimiters). So never use unnecessary whitespaces!
  • Only include singular and plural of a word, if both keys have very similar and have desirable characteristics!
  • Words in the app title are recognized as keywords, so think about including some difficult must-have keys in the title (e.g. math). But don't spam your title, if you want to build a brand name!
  • Keyword combinations count as well. Good combos will improve the quality of your list. Some words may be combined with many other keys and add up to your overall keylist quality ( e.g. "practice" can be combined to "math practice", "multiplication practice", "geometry practice", etc.)!
  • The Apple App Store ranking algorithm does (most likely) not take keywords from your app description into consideration!
  • Keyword length is important, because people are lazy. Try to stay below 10 chars per key (who will type in "bestmathgameevermadeonthisplanet"?)!
  • Iterate quickly. Each update will give you a new chance to drop out under-performing keywords and add in fresh ones!


Wrapping it up

In this part of the series we have described how to select your keywords in an easy to follow way. This guide should get you started and hopefully boost your download numbers. Keyword optimization is not magic, but it requires continuous work. With each iteration of your app you should get a better feel for which keywords to target. ASO takes time, so stay on top of it!

So far our iterative selection process looks like this:

  1. Create a pool of relevant keywords
  2. Get difficulty and traffic values
  3. Select by difficulty
  4. Optimize traffic

In the next part of this series we will take this simple approach a step further and introduce our multi-factor scoring model. So don't stop now, if you are looking for the ultimate keyword list!

Do you have any questions, feedback or ideas? Let us know in the comments!


App Store Optimization (ASO): Selecting the Right Keywords (Part 1)

Selecting the right keywords for your app is crucial for your success. Unfortunately, there is no single tool out there that can spare you from doing extensive and tedious research. With over 1.5 million mobile apps and a steady inflow of new titles every day, app developers need to pay special attention to app store optimization (ASO), particularly keyword optimization.

In this series of posts we will explain how to select the right keywords for your app and present an easy-to-follow guide.

In the first part of this series we will describe how to find relevant keywords for your app. Part 2 will outline a basic keyword selection process, which should get you started and function as an easy to follow guide. In Part 3 we will present a more "complex" procedure to choose an even better and improved keyword list.

Whenever possible, we will provide you with real-life examples from our own project. Optimizing your keywords can have an incredibly positive effect on your downloads. Our current statistics indicate that our download numbers increased significantly with our last update. But keep in mind that ASO takes time.

Don’t wait until the last second

When you develop your first game you’ve probably not read too much about ASO, because you have so many other things to worry about (launching your game, for example, or fixing all those nasty bugs). Most developers (including us) come across ASO at a very late stage in their development cycle. We did our “keyword research” (if you can even call it that) at the very last second, right before our app submission. In the last couple of days/weeks prior to our game launch we had all sorts of other problems to worry about (fixing bugs, launching our landing page, setting up social media pages, writing the app description, contacting press, etc.). Keyword optimization has always been on our todo list, but we constantly pushed it back.

We ended up spending too little time on finding the right keywords, which probably cost us a lot of potential downloads. According to Nielsen, 63% of mobile app downloads originate from app store search queries (The Mobile Media Report). So make sure to spend enough time on researching your keywords. ASO takes time!


A Simple 3-Step Keyword Selection Process

1. Create a keyword pool

Before you can start to create a potential pool of keywords for your app, you need to familiarize yourself with some basic terms used across different ASO sites.

  • Relevance: How relevant is a specific keyword for your app and target audience. Irrelevant keywords will not lead to conversions.
  • Difficulty (Ranking): How intense is the competition for a specific keyword. A higher value generally indicates that it is very hard to rank in the top spots. Check out this great article about Determining Keyword Difficulty to learn more about difficulty.
  • Traffic (Volume, Popularity): How popular is a particular keyword, i.e. how high is the search volume.

1.1 Identify relevant keywords

Only use keywords that are highly relevant to your app and audience. Never use keywords that seem easy to rank for, but are irrelevant to your target audience.

Let’s say you have developed a math game and have identified the keyword “swimming”. The keyword has relatively good characteristics, fairly good mid-range traffic and low difficulty:


Based on the above characteristics you might believe that this keyword is an easy target, even though it has no relevance to your app.

Now imagine you are a user searching for an app to learn how to swim. A math app will pop up as one of the first ten search results. Would you download that app? Probably not. If a user is spending the time to type in a search query, she is looking for something very specific and will most likely not download an unrelated app (high barrier to conversion). Only relevant keywords lead to conversions!

But how should you find relevant keywords for your app then?


1.1.1 Analyse Competitor Keywords

To identify relevant keywords we usually start by analysing our top competitors. If you get to the point of ASO, you should already have a pretty good picture of who your potentials customers are and who you are competing with (if you don’t know your market by now, you should spent some time thinking about that first).

To get a good idea of potentially relevant keywords start by gathering the keywords of your main competitors. To find some of your main competitors, you can skim the top charts of your relevant app store categories (in our case, the categories Education, Games/Educational or Kids). Instead of manually screening the top apps in different categories, you could, for example, use App Figures' Top Apps tool, which is a very convenient way to display top ranked apps in up to three categories side by side.

In addition, search for some general, but highly relevant search terms (e.g. "math" or "math game"). App Annie has a really great keyword ranking tool that should help you identify some competitors quickly.

App Annie Keyword Rankings

App Annie Keyword Rankings

Additionally, you should also have a look at appnique's Suggested Competitors list and Sensor Tower's Track Competitors tool:


Appnique's Suggested Competitors tool

Appnique's Suggested Competitors tool


Sensor Tower's Track Competitors tool

Sensor Tower's Track Competitors tool


Now that you have found some top ranking competitors, it’s time to find their keywords. A great tool to discover some of your competitor’s keywords is Sensor Tower’s Keyword Spy. This tool not only shows your competitor’s keywords, but also shows overlaps with your own keyword list:

Sensor Tower's Keyword Spy

Sensor Tower's Keyword Spy

Note: The keyword list provided by Sensor Tower is not necessarily identical to the actual keyword list submitted to the app store. It is currently not possible to directly query competitor’s keywords. Sensor Tower probably queries the app store search API with a set of keywords and guesses the app keywords according to the resulting rankings.

Another useful tool to find some of your competitor’s keywords is Straply. Straply shows you competing apps and their keywords:

Straply - Competing Keywords
Your main goal at this stage is to create a very broad pool of potentially relevant keywords. You will probably notice that not all keywords provided by the different ASO tools will be relevant to your app, so you will always have to manually pick the final candidates. The easiest way to keep track of all your keywords is to paste them into a Google Drive spreadsheet and share that across your team.

1.1.2 Other ways to identify relevant keywords

App Store Titles
Many apps include some of their most important keywords in their app title, so titles are a good starting point to get some clues. In general, it is a good idea to add high traffic, high difficulty keywords to your app title (like "math" or "game").

App Store Descriptions
Skim the descriptions of your main competitors. Some apps may include potentially relevant keywords in their app description (particularly in their feature list). But be aware that the Apple App Store algorithm does (most likely) not take the words of the app description into account for ranking purposes.

App Store Reviews
Search the top rated reviews of your app and your competitor's apps for relevant keywords. Start with 5-star reviews, because they are more likely to include positive keywords. This process is very time consuming, so we would only suggest to use reviews if you are stuck identifying enough keywords. There are tools out there that automate this process, like Sensor Tower's Review Analysis tool (only available in the enterprise version, though).

Google Trends
If you want to get a rough indication of the volume of a search query in relation to a base query, you can use Google Trends. In this example we used “math game” as the underlying base trend and compared the queries “math exercise” and “math practice”.


The search interest for “math exercise” is close to zero. This is a strong indication that this keyword will probably not be very successful. In addition, Google Trends offers you keyword suggestions.

Google AdWords Keyword Planner
A very viable source to conduct some basic keyword research. The Keyword Planner will provide you with useful information about search volumes and related keywords. There are tons of tutorials out there to use this tool.
For example: How to do Keyword Research the Smart Way: Targeting Interest and Intent

Apple App Store Related Keywords
Apple is currently experimenting with a new app store feature. When entering search queries, Apple will display related keywords (currently only available to certain users, but should hopefully be rolled out soon).


This may seem a little old-school, but if you are trying to find different alternatives to a specific keyword, a thesaurus is a good starting point. If you are lucky, you may end up with some good suggestions.

1.2 Get keyword data

Now that you have compiled a pool of relevant keywords you need to get keyword specific app store data. Many different ASO tools show you at least keyword traffic and keyword difficulty values. This step is very important, because high volume keywords suggested by Google Keyword Planner, for example, may have completely different characteristics in an app store environment (different search behaviour web vs. mobile, different ranking/ competition of websites vs. apps, etc.).

For the following steps it is crucial that you get traffic and difficulty characteristics for each keyword (e.g. via MobileDevHQ or Sensor Tower). Before moving on to the next step, you can delete all keywords that have zero traffic (or better move those keywords to a watchlist, because they may gain traffic again at some point in the future). Depending on the type of your game (iPhone/ iPad only, universal) and the information available in your ASO tool, you may also want to average your iPhone and iPad scores to get an aggregated difficulty/ traffic number.


Wrapping it up

In this first part we have showed you how to identify relevant keywords (remember, only relevant keywords lead to conversions!). Unfortunately, there is no single tool out there that will do all the work for you, but there are many tools that will help you in your research process. The key to finding great keywords is to have a deep understanding of your market. The more you know about your potential customers and competitors, the better your resulting keyword pool. ASO takes time, so don't expect to hit a home run with your first attempt.

In the next part of this series we will introduce an easy-to-follow keyword selection guide, so stay tuned.

Do you have any questions? Let us know in the comments!



Math Learning 1.1 - Our First Update

So we released the first update to our debut math learning game Blackboard Madness: Math last friday. The app is now universal and also supports iPhones (from iPhone 4 upwards, since we have no older Apple handheld devices. We are not sure, if the game will work on older devices). Furthermore, we added German localization - from graphics to screen texts, everything has been translated. We are now ready to implement even more languages! All we need are more translators to help us.

Finally, we have been busy with ASO (App Store Optimization) and have developed our own keyword optimization find the best possible keywords for our app. Szilard will be posting a series of articles outlining our procedure shortly.


So what's next? Keep up the work, I say!

To keep you up to date, here's a brief summary of what we will be doing in the near future (and that's really it for this post - I have to get stuff done;) )

We have received some valuable user feedback since version 1.0 - and we want to implement it. As mentioned earlier, we have so far included iPhone support and German language.  As a minor improvement, we have also changed the way inactive achievements look like, so that it is clearer that they have not yet been achieved.

Your feedback on our current To-Do-List:

  • Multiplication sign selection - apparently a lot of people want to choose between the signs *, × and .
  • Tutorial screens/hints should be accessible by the user (i.e. pause screen).
  • Game Modes: You will be able to choose addition, subtraction, multiplication and division separately.


Also: Android Version and more Languages

In the long run we will try to port Blackboard Madness: Math to a gazillion Android devices. BUT, to accomplish this our code needs some rewriting. We are currently still running on Cocos2d v1 (when we first set up our project this was the most up-to-date version, but a lot has changed since then) and Box2D as our physics engine. Well, today Cocos2D v3.1 is already out. We have heard that this version makes porting to Android easier - so we are currently migrating to the new Version (there are, of course, also a lot of other reasons why we want to ugrade).

I already got translations for Greek, Swedish and Italian - from friends and family. However those need a bit of work before they can be included into our math game.


Thank you! For Top 10 in Education!

We made into the Top 10 Education apps in the German App Store for free apps. Thanks for that!

There are even more interesting things going on :) We are currently in the concept and drafting phase for a new game. A multiplayer game (can't tell you much more at the moment). We may publish some screenshots when the idea is more sophisticated ;)


Blackboard Madness: Math - How it all began

Our exciting journey into game development began roughly two years ago. At that time Szilard was working as a full-time analyst in finance and I was doing media studies and linguistics, but was also working as a freelance designer doing print and digital media.

The Coffee & The Idea

So, we sat down for a cup of coffee one day and discussed our usual unusuals about life, work and everything else and talked about all kinds of random ideas.

I took this picture with my phone when we had "the coffee talk" and got our game idea :)

Cup of Coffee: I took this picture with my phone when we had "the coffee talk" and got our game idea :)

Just days before, one of my clients, an owner of a couple of gyms, had approached me with an idea to combine workout with mental exercise. He wanted to install a bunch of iPads in his gyms and his members should solve simple math problems during their workouts.

I discussed the implementation with my friend Szilard (a rails guy with solid Objective-C experience) to get a rough idea of how long this project would take. A couple of days later I made my client a quick offer and gave him a ballpark number. My idea was to create a barebone version of the game for my customer, rebrand it for potential other clients and eventually learn enough during this project to create my own games. Basically, getting paid to learn game development.

Quickly after making my first offer, which was by the way not very high, it was clear that my customer was not seriously willing to investment into this new venture. I still liked the idea of a simple, intuitive and addictive math game that people would enjoy. Most math games in the app store didn’t seem much fun and were plain copies of each other (most of them looked like boring calculator apps). So I decided to get back to Szilard and we kept brainstorming. We quickly came up with a different idea. The conversation was something along these lines (slightly abbreviated and I can’t it remember word for word :)

Marios, while sipping at his coffee and taking a big bite out of his chocolate donut: "Imagine the number Pi pops up on the screen and you have to slash all digits in the correct order! The digits fly in a mad and crazy way on the screen and have to be slashed fast!"
Szilard: "I really like the idea of slashing the numbers. We could teach all kinds of math concepts. So instead of making Pi the main game, we should make it a bonus round. What if the user had to slash primes too? And regular math problems?"
Marios: "Sweet. We could name this round PRIME TIME!"
Szilard: ”[…]This shouldn’t be too hard! Let's give it a try!”

You can say that we had our own HEUREKA moment, except that we did not run around naked through the streets screaming and waving with our arms around.

First Mockups & Names

As you can see, the original idea for Blackboard Madness: Math evolved around the bonus rounds. Our original intention was not to make a learning game per se. We just wanted to create a unique and action filled brain exercise game, something that hasn’t been made before.

The following couple of weeks not too much happened, because we were both working fulltime jobs. Occasionally, I went to the drawing board and created some first mockups with Photoshop, the blackboard and a couple of UI elements. I arranged everything into different game scenes and experimented with different designs.

At that time we had no name for the project, yet (we basically put all of our files on a shared dropbox folder named “Math_Game”). To give the entire development process a more professional touch, we decided to brainstorm some names (we came up with names like Mathster Mind, Chalkboard Math, Math Slasher). Finding a name that we both liked was not an easy task, so we decided to consult our friends and family. We did not choose the final name in light of any ASO aspects, but rather because it best fit the concept that we had in mind. "Blackboard" is obvious, our game takes place on a blackboard and reminds the user of his school days. "Madness", because we wanted a fast and action packed game. We only recently added the keyword "Math" to the end of the name for ASO reasons (right before preparing the game for iTunes Connect).

After creating the mockups, there was again a longer period of stagnation. Since I never wrote a line of C/ Objective-C, I got myself a couple of programming books to get the ball rolling. Another two to three weeks passed before I could write some basic example code (“Hello World!”).

We decided early on that we wanted to use Cocos2D as our game engine in combination with Box2D. Cocos2D and Box2D are open-source, have a great developer community and are used by many popular games (Badland, Angry Birds, Tiny Wings, StickWars, Farmville, etc. to name just a few).

I started out by building the main screen of the game and added a simple menu. In a next step I tried to make the numbers fly. This did, however, not work very well as I did not use Box2D to apply a force to the numbers. I simply created a few labels and made them move along bezier curves :)

First (non-)functional mockup of Blackboard Madness: Math

The very first mockup running on iPad: The blue arrows are the waypoints of a bezier curve. Lives (top right corner) and score (top left corner) are static. Everything is just a background image. The red crossmarks ("X") are simply moving along a fixed, pre-defined curve (coordinates are randomly created every time the app starts) The white dots are just labels to visualize the coordinates.

Nonetheless, I showed this first prototype to Szilard and he was immediately thrilled. I can remember that he started working on the game right after work and coded until 3 AM.

Well, he ended up implementing Box2D and made the numbers fly smoothly across my iPad screen. When I saw it, I was blown away. Even though it was nothing special, this was the first actual running copy of our game. It was absolutely barebone, had no real graphics, no real functionality, but we were both really proud about our first steps. These first lines of code made us realize that it is possible to create a high quality game, even if you no budget, no prior game development experience and only a couple of hours each day to work on it.

Version Control - USE (G)IT!

Back then, we exchanged the code base via Dropbox, constantly adding classes, animations, particle effects, graphics, et cetera. Every change we made had to be “pushed” to Dropbox, which basically meant to completely re-upload the entire project folder. You can imagine how messy it would sometimes get when we had to merge our code - quite inefficient and tiresome I must admit. Well, this workflow went on for almost two years until the game release (I guess we had gotten so used to this workflow and believed that alternative solutions would take too much time to implement/ learn). Well, right after the release we switched to git and are now using BitBucket.

So here is our first advice: Use version control! We highly recommend (g)it.

During our development process, which took around two years from idea generation to release (remember that we thought it would be a simple and quick project…), we have learned many valuable lessons. We have learned a lot about coding (game architecture, Objective-C, frameworks like CoreData, game/ physics engines), design, user experience, marketing and press work. Sometimes our journey was grueling, fixing bugs or fighting fatigue, but there was hardly a better day in our lives than the day we finally released Blackboard Madness: Math on March 28th, 2014 (Our aimed release date was March 14th -Pi Day, however we were stuck in Apples approval process and could not hit our goal).

Giving Insights

To give something back to the indie community, we decided to create this development blog (or diary if you will). In the coming days and weeks, we will try to post interesting articles about what we have learned so far and try to illustrate our experience, whenever possible referring to Blackboard Madness: Math as a concrete example. We have read many times that marketing should account for roughly one third of your development process. This number seemed a little high, but we can assure you, a real marketing strategy takes a lot of effort. Setting up accounts on various social media platforms, engaging your followers/friends, creating content, coding a landing page, creating a press list and a press kit, writing press releases, making a trailer, taking screenshots and so on. But without marketing chances are close to zero that your game will be discovered and succeed.

We will break our development experience into smaller chapters to give you some more details on each section. Our initial series will focus on marketing, but we will also try to give you some insights into our life and work as independent developers of Blackboard Madness: Math.

What’s next?

Well, we are strong believers of the lean startup philosophy and now that our game is finally out there, we try to release updates as quickly as possible (as we speak we are finishing up our first release that will bring iPhone support and localization). We will try to implement user feedback, add new features from our very long to-do list and will keep marketing our game. We will try to keep the update cycles short (ideally somewhere between 2-4 weeks, but we still have regular fulltime jobs, which makes it that much harder).

You can like us on Facebook or follow us Twitter!

You should definitely check out Blackboard Madness: Math and tell us what you think! Download HERE.


A long road to go - a lot to learn

So here we are. Our Dev Blog is finished and our first update for Blackboard Madness: Math will be released very soon (90% of the code is done - the update still needs some testing, though). It will finally bring iPhone support and German localization (more languages to come).

The main purpose of this blog is to give you some insights into the work of two indie game developers. We want to share our experience, share what we have learned and where we have struggled.

The first couple of posts will mainly focus on marketing. For this purpose, I have started to outline a series of blog posts about Indie Game Marketing on a Budget. Whenever possible our posts will be autobiographic and outline our own marketing strategy with Blackboard Madness: Math.

We will also write about the creation and evolution of our little math learning game – from its’ humble beginnings to its’ launch and beyond.

So stay tuned and follow us on Facebook and Twitter!

By the way... did you download our math learning game? Not yet? DO IT NOW!

You can also rate it and give us some feedback if you like ;)