Frequently Asked Questions

What is Firebase?

Firebase is a scalable, real-time backend for your web application. It allows developers to build rich, collaborative applications without the hassle of managing servers or writing server-side code. Please read our how it works page to learn more.

How does it work?

You can install Firebase by including a library (Web, NodeJS, Obj-C, Java) in your application. This library provides a data structure that is automatically synchronized between all of your clients and with our servers. If one client changes a piece of data, every other client observing the same piece of data will be updated as well—within milliseconds.

What platforms does Firebase support?

Firebase has support for the web, iOS, OS X, and Android clients. In addition, it has a Node.js and a Java library designed for server-side use. The Firebase web client supports all mainstream browsers (IE 7+, Firefox 3+, Chrome, Safari, Opera, and major mobile web browsers), and it works on any network connection.

Is Firebase just for “real-time” apps?

Not at all! Firebase is for anybody that wants to write apps without having to run backend servers or write server code. Many developers prefer focusing on frontend HTML and JavaScript rather than building, deploying, and maintaining server-side backend code. Even if real-time isn’t critical to your application, Firebase can help you build your application faster and scale seamlessly.

So I can build apps without server-side code? What’s the catch?

For the most part, you really can write full apps without writing any server code and everything is amazing and there are kittens and bunnies everywhere. If this sounds too good to be true, here’s “the catch”: In some cases, you may still need your own server.

Firebase is great for storing and propagating data, but that’s not the only thing servers do. You might need server code to integrate with other APIs, send out emails to users, do heavy data processing, etc. Fortunately, Firebase is 100% compatible with your app when running your own server. Firebase can still do all of the heavy lifting needed to scale your app and make it real-time! See below.

What if I need to run custom server code?

No problem. We fully support accessing Firebase from your backend servers. When used in this configuration, you still get all of the benefits of using Firebase as your data store (way less code, easier scaling, real-time updates, etc.), while gaining the flexibility to run whatever custom backend logic you need. We have a Node.JS client, a Java client and a REST API specifically for this purpose. This allows you to do your own data processing, custom validation, etc. on your own servers while still relying on Firebase for data storage and real-time propagation of updates.

How do I secure my data in Firebase?

Security has been a priority for Firebase since day one. We provide a full suite of authentication methods so that developers have full control over how users log in to their apps. We then allow developers to specify Security Rules so that access can be controlled based on those authentication credentials. Our rules-based approach to security gives us the most flexible security solution of any cloud data service. In addition, all traffic to and from Firebase uses SSL to ensure your data is never read or modified during transit.

I already have a database and servers. Is Firebase for me?

Very possibly! Firebase can be used to easily add real-time features to existing websites. You could use Firebase to power new features (such as chat) or you could take an existing feature and make it real-time by pushing relevant data updates into Firebase.

Is my data safe, backed up, and always available?

Firebase is intended for business-critical applications and we take the safety of your data very seriously. All of your data is stored redundantly and off-site backups are made nightly. All paid Firebases come with a standard SLA and custom SLAs are available upon request.

Can I get my data out of Firebase?

Absolutely! Your data is never going to be locked into Firebase. Simply browse to your data in the graphical debugger (e.g. https://<Your Firebase>.firebaseIO.com/) and click the “Export JSON” button in the upper right. Alternatively, you can use the “download” query option in the REST API. Data is exported as JSON, which can be easily parsed and processed in a variety of ways.

Are there any restrictions on how large of primitive values Firebase can store?

Firebase can not store primitive values over 10mb. This means that you can not store a single, 10mb string (or other primitive). However, if you are storing more than 10mb at a location, but it is in the form of an object, then there is no issue.

How much does it cost?

Firebase is free for small apps. We charge for larger apps when extra scale, support, and an SLA are needed. You can see our listed prices here.

Can I run Firebase on my own servers?

Firebase is a hosted cloud service, so the general answer is “no.” Some customers have very specific needs for where their sensitive data is physically stored and managed, so we may make exceptions. Contact us for more info.

What happens to my app if I lose my network connection?

Firebase transparently reconnects to the Firebase servers as soon as you regain connectivity. In the meantime, all Firebase operations done locally by your app will immediately fire events, regardless of network state, so your app will continue functioning correctly. Once connectivity is reestablished, you’ll receive the appropriate set of events so that your client “catches up” with the current server state, without you having to write any custom code.

Will my app work in “offline mode” and recover when it comes back online?

Yes, yes, it will!

How much data can I store in Firebase?

Firebase is a scalable, elastic data store, so you can store as much as you want! Firebase will automatically scale with your needs. You will only be restricted by the storage limit on your plan.

How fast does data update in Firebase?

Very, very fast. Our servers are optimized for extremely low latencies. Firebase is designed to be fast enough for high performance real-time applications like multiplayer games. We maintain persistent connections between your clients and our servers so that data can be pushed in both directions without delay. You can expect typical network latencies (generally less than 100ms) for data updates between clients.

Will the Firebase JavaScript file slow down my webpage?

The Firebase JavaScript client is a single JS include with no external dependencies that we have extensively optimized and minified. The current gzipped size is ~20k, around half the size of jQuery. In addition, the file is served off of a CDN with servers around the world. As such, its effect on website load time should be minimal.

How does Firebase compare to other real-time services like PubNub or Pusher?

PubNub and Pusher are both great services that provide simple real-time messaging for applications with a “publish / subscribe” model. Firebase takes a broader approach and provides real-time updates, data synchronization, and data persistence as one unified service.

This unified approach allows for simpler application development. Developers who build their software with Firebase will automatically handle real-time updates, and their products will work in “off-line mode”, both without any extra work from the developer. More importantly, Firebase can serve as a complete backend for most applications—completely eliminating the need for developers to manage servers and write server code.

Who’s behind Firebase?

Firebase is a well-funded startup located in San Francisco, California. You can read about our team here.

Who's using Firebase?

We power lots of great apps built by individuals, startups and large organizations alike. You can see case studies here.

Do you have a Firebase client for (Python / Ruby / .Net /...)?

Firebase currently has client libraries for the web, iOS, OS X, Java / Android, and Node.js. Our goal is complete ubiquity, so we’ll have more clients coming soon. In the meantime, our community has created several open-source client libraries and our REST API can be used anywhere you can make HTTPS requests!

What types of data can I store in Firebase?

At a high-level you can store any type of data in Firebase, from game state to chat messages to images or other media files. At a low-level, we support basically the same data types as JSON: Strings, Numbers, Booleans, and Objects (which in turn contain Strings, Numbers, Booleans, and more Objects).

We let you do a few extra things not allowed by JSON as well, such as ordering siblings using “priorities”. See Ordered Data.

Can I query based on the contents of my data?

Yes, but only to a limited extent. Firebase allows you to limit / query based on 3 parameters: child name, a custom priority that you specify, and the total # of children you want to retrieve. See Querying and Limiting Data in Firebase for more info.

This is actually enough to support a wide-range of use cases, though in some cases you’ll need to structure your data in a specific way or even duplicate some data so that you can efficiently retrieve it.

How can I do advanced queries on my data?

Firebase is designed for real-time updates, speed, and scale. To support these goals, we chose to initially not support more advanced querying functions. If your product needs complex queries, we recommend using our Node.js library or REST API to keep Firebase data in sync with another database system, such as MySQL or MongoDB. You can then run your queries on that system like you normally would. We have also blogged about how to convert common SQL queries for Firebase and how to perform advanced searches on your Firebase.

We will provide even more advanced querying in the future, but it’s going to be a little while before we get to it. We’d love your feedback along the way on what sorts of querying functionality you need.

Can Firebase tell me when users are online?

Yes! Keeping track of presence information—which users are online or offline—is one of the things Firebase is very good at. See Managing Presence and our presence example.

Can I count the children at a location without retrieving the actual child data?

This is a much-requested feature, and we’ll be extending the API to provide this in the near future. For the moment, you’ll need to retrieve the children and count them manually.

Can I ask another question?

Yes! Please reach out and ask away.