Topic Messaging

FCM topic messaging lets you to send a message to multiple devicesthat have opted in to a particular topic. You compose topic messages as needed,andFCM handles routing and delivering the message reliably to theright devices.

Key points about topic messaging:

  • Best suited for publicly available information like weather alerts.
  • Topic messages are optimized for throughput rather than latency. For fast,secure delivery to single devices or small groups,target messages to registration tokensinstead of topics.

Quotas and limits

Topic messaging supports unlimited subscriptions for each topic. However,FCM enforces limits in these areas:

  • One app instance can be subscribed to no more than 2000 topics.
  • If you are usingbatch subscriptionto subscribe app instances, each request is limited to 1000 app instances.

Subscription throttling

The rate for adding or removing topic subscriptions is limited to 3,000 QPS perproject.

The frequency of new subscriptions is rate-limited per project. If you send toomany subscription requests in a short period of time,FCM servers will respond with a429 RESOURCE_EXHAUSTED ("QUOTA_EXCEEDED")response. Retry with exponential backoff.

Fanout throttling

Message fanout is the process of sending a message to multiple devices, such aswhen you target topics and groups, or when you use theNotifications composerto target audiences or user segments.

Message fanout is not instantaneous and so occasionally you have multiplefanouts in progress concurrently. We limit the number of concurrent messagefanouts per project to 1,000. After that, we may reject additional fanoutrequests or defer the fanout of the requests until some of the already inprogress fanouts complete.

The actual achievable fanout rate is influenced by the number of projectsrequesting fanouts at the same time. A fanout rate of 10,000 QPS for anindividual project is not uncommon, but that number is not a guarantee and is aresult of the total load on the system. It is important to note that theavailable fanout capacity is divided among projects and not across fanoutrequests. So, if your project has two fanouts in progress, then each fanout willonly see half of the available fanout rate. The recommended way to maximize yourfanout speed is to only have one active fanout in progress at a time.

Note: This fanout rate quota is not adjustable.

Next Steps

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-18 UTC.