This page describes the storage size of documents, document names, fields, and index entries in Cloud Firestore .
You can learn about the costs of this storage at Cloud Firestore Pricing .String size
String sizes are calculated as the number of UTF-8 encoded bytes + 1.
The following are stored as strings:
- Collection IDs
- String document IDs
- Document names
- Field names
- String field values
For example:
- The collection ID
tasks
uses 5 bytes + 1 byte, for a total of 6 bytes. - The field name
description
uses 11 bytes + 1 byte, for a total of 12 bytes.
Document ID size
The size of a document ID is either the string size for a string ID or 8 bytes for an integer ID.
Document name size
The size of a document name is the sum of:
- The size of each collection ID and document ID in the path to the document
- 16 additional bytes
For a document in the subcollection users/jeff/tasks
with a string document ID
of my_task_id
, the document name size is 6 + 5 + 6 + 11 + 16 = 44 bytes:
- 6 bytes for the
users
collection ID - 5 bytes for the
jeff
document ID - 6 bytes for the
tasks
collection ID - 11 bytes for the
my_task_id
document ID - 16 additional bytes
Field value size
The following table shows the size of field values by type.
Type | Size |
---|---|
Array | The sum of the sizes of its values |
Boolean | 1 byte |
Bytes | Byte length |
Date and time | 8 bytes |
Floating-point number | 8 bytes |
Geographical point | 16 bytes |
Integer | 8 bytes |
Map | The size of the map, calculated the same way as document size |
Null | 1 byte |
Reference | The document name size |
Text string | Number of UTF-8 encoded bytes + 1 |
Vector | 8 bytes per dimension |
For example, a boolean field named done
would use 6 bytes:
- 5 bytes for the
done
field name - 1 byte for the boolean value
Document size
The size of a document is the sum of:
- The document name size
- The sum of the string size of each field name
- The sum of the size of each field value
- 32 additional bytes
This example is for a document in subcollection users/jeff/tasks
with a string document ID of my_task_id
:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
The total size of the fields is 71 bytes:
Field name and value | Field size in bytes |
---|---|
"type": "Personal"
|
14 5 for the field name + 9 for the field's string value |
"done": false
|
6 5 for the field name + 1 for the field's boolean value |
"priority": 1
|
17 9 for the field name + 8 for the field's integer value |
"description": "Learn Cloud Firestore"
|
34 12 for the field name + 22 for the field's string value |
So the document size is 44 + 71 + 32 = 147 bytes:
- 44 bytes for the document name
- 71 bytes for the fields
- 32 additional bytes
Index entry size
Index entry sizes are calculated as follows for single-field and composite indexes.
Single-field index entry size
The size of a single-field index entry depends on whether an index is scoped to a collection or a collection group.
Collection scope
The size of an entry in a single-field index with collection scope is the sum of:
- The document name size of the indexed document
- The document name size of the indexed document's parent document
- The string size of the indexed field name
- The size of the indexed field value
- 32 additional bytes
Consider a document in the sub-collection users/jeff/tasks
with
a string document ID of my_task_id
:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
For a single-field index with collection scope that indexes the done
field, the total size of the entry in this index is 109 bytes:
- 44 bytes for the document name
users/jeff/tasks/my_task_id
- 27 bytes for the parent document's document name
users/jeff
- 5 bytes for the
done
field name - 1 byte for the boolean field value
- 32 additional bytes
Collection group scope
The size of an entry in a single-field index with collection group scope is the sum of:
- The document name size of the indexed document
- The string size of the indexed field name
- The size of the indexed field value
- 48 additional bytes
Consider a document in the sub-collection users/jeff/tasks
with
a string document ID of my_task_id
:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
For a single-field index with collection group scope that indexes the done
field, the total size of the entry in this index is 98 bytes:
- 44 bytes for the document name
users/jeff/tasks/my_task_id
- 5 bytes for the
done
field name - 1 byte for the boolean field value
- 48 additional bytes
Composite index entry size
The size of an entry in a composite index depends on whether the index is scoped to a collection or a collection group.
Collection scope
The size of an index entry in a composite index with collection scope is the sum of:
- The document name size of the indexed document
- The document name size of the indexed document's parent document
- The sum of the indexed field values
- 32 additional bytes
Consider a document in the sub-collection users/jeff/tasks
with
a string document ID of my_task_id
:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
For a composite index with collection scope that indexes the done
and priority
fields (both ascending), the total size of the entry in this index is
112 bytes:
- 44 bytes for the document name
users/jeff/tasks/my_task_id
- 27 bytes for the parent document's document name
users/jeff
- 1 byte for the boolean field value
- 8 bytes for the integer field value
- 32 additional bytes
Collection group scope
The size of an index entry in a composite index with collection group scope is the sum of:
- The document name size of the indexed document
- The sum of the indexed field values
- 32 additional bytes
Consider a document in the sub-collection users/jeff/tasks
with
a string document ID of my_task_id
:
- "type": "Personal" - "done": false - "priority": 1 - "description": "Learn Cloud Firestore"
For a composite index with collection group scope that indexes the done
and priority
fields (both ascending), the total size of the index entry in this
index is 85 bytes:
- 44 bytes for the document name
users/jeff/tasks/my_task_id
- 1 byte for the boolean field value
- 8 bytes for the integer field value
- 32 additional bytes