About FCMDebug
FCMDebug is a free browser-based tool that lets developers send real Firebase Cloud Messaging (FCM) push notifications without writing backend code. Paste your service account key, pick a target, write your JSON payload, and hit Send.
Instant Testing
Send FCM notifications in seconds — no server setup, no SDK, no code required.
Privacy First
Your credentials are never stored, logged, or shared. Processed in-memory only.
All Platforms
Works with Android, iOS, web, Flutter, React Native — any FCM-compatible platform.
Free Forever
No signup, no limits, no premium tier. Just a tool that works.
Why We Built This
If you've ever worked on a project with push notifications, you know the pain. The backend team sends a notification — but nothing shows up on the device. Is it the payload? The token? The authentication? Nobody knows, and everyone points at each other.
I've been on both sides. As a developer, I'd wait for the backend team to finish the FCM integration before I could even test my notification handling code. And when something broke — a silent notification not waking the app, a data message missing a key, a topic subscription that quietly failed — debugging it meant jumping between the Firebase Console, server logs, and device logs. It was slow, frustrating, and easy to miss things.
The worst part? In some projects I simply forgot to handle certain notification scenarios altogether. A background data message on iOS? An Android notification channel that wasn't created? These bugs only surfaced in production because there was no quick way to fire a specific payload at a device and see what happens.
I wanted a tool where I could just paste my service account JSON, type any payload I want — exact JSON, full control — point it at a device token, topic, or condition, and hit Send. No backend needed, no CLI flags to remember, no OAuth token dance. Just open a browser and test.
That's why FCMDebug exists. It's the tool I wished I had on every project where push notifications were involved.
How It Works
Your browser sends the request to our serverless API route. The route uses your service account JSON to generate a short-lived OAuth 2.0 token, builds the FCM HTTP v1 request, forwards it to Google's FCM servers, and returns the response. Nothing is stored — the entire flow is stateless.