I am trying to estimate how much mobile data I should provide to users for my CommCare application project. What are the estimates for how much data is required to submit a form, sync with the server, etc.? Do factors such as inconsistent internet connectivity lead to greater data consumption?

4 Answers 4


This tends to be a fairly difficult thing to do, but here are some guidelines that may help you estimate.

Determine the size of your restore

To do this, simply hit the restore of a mobile worker on CommCareHQ of a normal load (https://www.commcarehq.org/a/DOMAIN/phone/restore/?version=2.0&[email protected])

Right click and hit "Save as". Then use a file explorer to figure out how large the restore is

Call this restore_size.

Determine the size of a form submission

Look at an average form that your users will be submitting on CommCareHQ using the Submit History report or something similar. Once you've opened the form, click the Raw XML tab and then open the form xml in a new window. Repeat the process of saving the XML and looking at the size of the file.

Call this form_size

Estimate usage

Once you have the size of a restore and the size of a sync, you now just have to determine how often a user will sync or restore per day. Then to get your estimation on data usage you can do the following:

(restore_size * n_restores_per_day) + (form_size * n_form_submissions_per_day) = daily_data_usage_size

Note that this assumes application installs have been done on the Wifi.

Do factors such as inconsistent internet connectivity lead to greater data consumption

In general this should not be an issue.


Just one small addition - As Ben mentioned, this does not assume there are app installations on the mobile network. If you think there will be app updates over the mobile network, you may want to add buffer for that. In addition, if you anticipate that case loads will increase over time you might also add some to account for that.


One very important thing I want to add to the answer above, which can make things quite confusing:

When we receive data from the server we also compress the data in the "zip" format before it is transmitted over the wire. This can have massive impacts on the amount of data used. On large programs we have had 20MB "Restore" files containing user data compress down to < 1MB.

You can evaluate this by using a Zip program on your computer to compress the file before calculating the restore_size that was mentioned in the leading answer currently.


You can also use the Android built in features to directly measure the data usage of synching. Your Android should track data usage per application and you should be able to reset the count to 0 whenever you'd like. (On my phone there is "Data Usage" section when I click on the connection from the settings menu and most Androids have something similar).

You can run some tests locally with different size files and experiment what happens when you sync ... maybe submit a bunch of data on Web Apps that updates and creates cases, then sync your phone and see how much data it uses.

Obviously this will all be estimates, but if you have someone actually using the app in the field you can get exact info. So you can use the estimates but after a month or two of real usage you should have pretty accurate empiric data to base it on.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.