How to increase your Android app ratings

Android app ratings and reviews: we love them, and we fear them. At times, it can feel that users only bother with them to complain. Sure, we like to hear about the issues in our apps so we can improve them, but a little love would be nice too!

There is a simple trick to increase your Android app ratings, but it needs to be deployed with care.

Is your app ready for higher ratings?

Overall, the foremost requirement to get higher ratings is to have a good app. If your app doesn’t do what users expect it to do, improve your app rather than obsess about your ratings.

So, before reading on, ask yourself: are you proud of your app?


Why don’t users tell you they love your app?

From your analytics (No analytics? Check out The analytics checklist: what to measure and look for ), you know your app has 1,000 weekly active users. You know you have 2,000 users who have been using the app for more than 6 months. Yet, you have a small number of ratings (eg 80 ratings for 10, 000 downloads), and the average is a bit low (eg 3.5).

Step back. When was the last time you rated an app? Was it because the app had repeatedly crashed on you? Was it because you thought “I love this app so much, I want to rate it”? Was it because the app prompted you for a rating, after a positive experience in the app?

How to increase your app ratings and reviews

Most users rate negatively when the app annoys them. A number of users rate positively when the app politely asks them for feedback at the right moment.

The right moment is very important. It needs to be after a user has completed a “positive event”. A “positive event” depends on the app of course. For example, it could be making a booking, emptying a busy inbox, completing a level in a game, or reading through a whole article.

Generally, I aim for 5 positive events, and I only ever prompt the user once. Based on several apps where I have implemented this, about 8-10% of prompted users tap on the button to get to the store, but only half of those actually leave a rating, meaning 4-5% of prompted users leave a rating (and about a fifth leave a review as well). The majority of those users leave a 5 stars rating, and the rest leave a 4 stars rating. I have seen apps with a rating of 3.2 going up a full point to 4.2 in about 5 weeks, without any other change in the app.

Show me the code

This code tutorial assumes you have an existing app project. Let’s start with creating a new subpackage for this feature, which we will call appratings.

Firstly, the app needs to track the positive events and whether or not the dialog prompt has been displayed, so  Shared Preferences are perfect for this.

So let’s create a new class in appratings subpackage, and add the code as below.

Note: the code assumes your app is an instance of and you have a method getAppContext() in it. Replace as appropriate to access your SharedPrefs object.

Secondly, we need code to show the dialog prompting the user. There are two variants for it. The simple variant asks the user to rate the app. The more complex variant gives options to email or rate the app, depending on whether the user likes the app or not.

Generally, I recommend implementing the simpler dialog, because you should only implement this when you know your app is stable and does what your users expect. If you app still gets a lot of negative reviews and you have large bugs you haven’t fixed yet, I recommend doing an update fixing the bugs first, then prompting only in the following update.

However, if your app is still expected to change, the more complex dialog is a good way to get some more personal feedback from users. Additionally, if you have a beta program you are trying to recruit for, users who email you and whose problem you can solve are generally quite up for joining your beta.

Either way, create a class in appratings subpackage. Here is the version for the simple dialog.

And the related strings, defined in strings.xml.

Here’s a screenshot of what it looks like

Here is the version for the more complex dialog.

And the related strings, defined in strings.xml.

Here’s a screenshot of what it looks like.

Lastly, we need to wire it all up. Wherever a positive event has happened, add a call to AppUsageHelper.incrementPositiveEventsCount() followed by a call to AppUsageUIHelper.showPromptIfRequired(getActivity()) (replace getActivity() with this if calling from an Activity and not a Fragment).

What next?

Think carefully about your app’s “positive events”, and whether prompting a user for ratings will fit in the user flow without spoiling that positive event.


Author: Natalie Masse Hooper

Mobile app developer with 12 years experience. Started with the Android SDK in 2010 and switched to Flutter in 2017. Past apps range from start ups to large tech (Google) and non tech (British Airways) companies, in various sectors (transport, commercial operations, e-commerce).

Leave a Reply

Your email address will not be published.