Generate FCM push notification code and payloads for testing
No custom data fields. Click "Add Field" to add key-value pairs.
{
"to": "DEVICE_TOKEN",
"notification": {
"title": "Hello from FCM",
"body": "This is a test notification"
}
}curl -X POST \
https://fcm.googleapis.com/fcm/send \
-H "Authorization: key=YOUR_SERVER_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "DEVICE_TOKEN",
"notification": {
"title": "Hello from FCM",
"body": "This is a test notification"
}
}'Firebase Push Tester generates ready-to-run code for sending Firebase Cloud Messaging (FCM) push notifications. You fill in the message fields — notification title, body, target token or topic, and optional data payload — and the tool produces a matching HTTP request or SDK snippet you can paste into your backend, so you can test delivery to Android, iOS, and web clients without hand-writing the JSON.
It is built for mobile and backend developers who are wiring up FCM and want to confirm their message structure before integrating it. The tool covers the modern FCM HTTP v1 API endpoint (https://fcm.googleapis.com/v1/projects/PROJECT_ID/messages:send) and outputs cURL, Node.js firebase-admin, and raw JSON so you can quickly validate token targeting, notification vs. data messages, and platform-specific overrides like android and apns blocks.
The tool assembles a valid FCM HTTP v1 message object. Every request wraps your input in a top-level message key, then places the target under one of token, topic, or condition — these are mutually exclusive, so the tool enforces choosing exactly one. Your title and body go inside the notification object, while custom key-value pairs go inside the data object as strings (FCM requires all data values to be strings).
For platform tuning, the tool can nest an android block (with its own notification and priority such as high or normal) and an apns block (with headers and an aps payload for iOS, including badge, sound, and content-available for background delivery). This mirrors how a real FCM v1 request lets you override behavior per platform from a single message.
Because the HTTP v1 API uses OAuth 2.0 rather than the old legacy server key, the generated cURL uses an Authorization: Bearer ACCESS_TOKEN header, and the Node.js output uses the firebase-admin SDK which handles token minting from your service account JSON automatically. The tool only builds the request text — it does not send anything or store credentials.
No. It only generates the request code and JSON. You run the generated cURL command or Node.js snippet from your own environment with your own credentials to send the actual test notification.
Yes, it is completely free. The code is generated entirely in your browser, so your project ID, tokens, and message content are never sent to or stored on our servers.
It targets the modern FCM HTTP v1 endpoint (/v1/projects/PROJECT_ID/messages:send), which uses OAuth 2.0 bearer tokens. The legacy server-key API is deprecated by Google, so the tool does not generate legacy requests.
A notification message includes a notification block and is automatically displayed by the system tray when the app is in the background. A data-only message carries just a data payload and is always delivered to your app code to handle, which is useful for silent updates or custom UI.
Generate a short-lived OAuth 2.0 access token from your Firebase service account, for example using the Google Auth library or gcloud auth application-default print-access-token, then paste it into the Authorization header. The Node.js firebase-admin output does this automatically from your service account key.
Yes. Enter a topic name (or a condition combining topics) as the target instead of a registration token, and the tool places it under the topic or condition field of the message object.
FCM requires the data object to contain only string keys and string values. If you need to send numbers, booleans, or objects, serialize them (for example as JSON) on the sending side and parse them again in your client app.