Quick Links

Most things you can do on an iPhone you can do with an Android phone. One big exception is iMessage. Can you be a blue bubble with an Android phone? What about a Windows PC? Yes, you can.

How is that possible? Since Apple refuses to relinquish its grip on iPhone users' phone numbers, people have been trying to make iMessage work on Android for a long time. The big breakthrough came when Apple brought iMessage to the Mac. Therein lies the key to getting this working.

Related: Dear Android Users, iMessage Is Better Than You Think

What You'll Need

Before we get your hopes up too much, you should know there are some pretty big catches. First, and most importantly, you will need a macOS device or a macOS virtual machine---though it is highly recommended to do this with actual Apple hardware.

That device will need to be on Mac OS X El Capitan (released in 2015) or newer, but you'll want to take a minute to decide which version will best suit your needs. Certain features of iMessage are not supported through the software we'll be using with some versions of macOS (more on that later).

We'll be using an open-source tool called BlueBubbles. AirMessage is another popular solution, but we think BlueBubbles has a few advantages. It's self-hosted so you're not reliant on servers run by other people. BlueBubbles is community-driven and has desktop apps for Windows and Linux, a web app, and tons of personalization features.

As mentioned, certain BlueBubbles features are not available on all macOS versions. Check out the table below to see which version best fits your needs.

BlueBubbles Features

El Capitan - Catalina

Big Sur

Monterey

Sending / Receiving Messages

Sending Attachments

✓**

Receiving Attachments

Receiving Tapbacks, Stickers, and Mentions

Receiving Delivered / Read Receipts

Receiving Replies

Creating DMs

Creating Group Chats

  • ✓** - Monterey attachment sending may not be as reliable as previous macOS versions, since it relies on UI Automation (simulating keystrokes) rather than actual code.
  • - Replies will show as a regular message on macOS 10.x devices, instead of showing with the replies UI.

This is the state of BlueBubbles as of June 2022. Check the FAQ page for updated information on macOS versions.

Of course, you will also need an Apple ID to use iMessage. Other than that, we're all set. In short, you need a Mac running a compatible version of macOS, the Messages app signed in with your Apple ID, and the BlueBubbles server. So let's get started.

Set Up the BlueBubbles Server

The most important part of the puzzle is the BlueBubbles server. The server runs on your macOS device and acts as sort of a "hub" for iMessages to be sent to the BlueBubbles apps on your Android phone and Windows or Linux PC.

First, head over to the GitHub page on your macOS device and download the latest DMG file of the BlueBubbles server.

Click the latest BlueBubbles DMG file.

Next, open the DMG file and drag it to the "Applications" folder after it installs. Now you can open the app.

Drag BlueBubbles to the Applications folder.

You'll first be asked to give BlueBubbles "Full-Disk Access." This is required in order for BlueBubbles to read from the iMessage chat database. Click "Open System Preferences."

Click "Open System Preferences."

Go to the "Security & Privacy" section of the Settings and select "Full Disk Access" in the sidebar.

Select "Full Disk Access."

Click the lock icon in the bottom corner to enter your Mac password and then enable BlueBubbles. You'll be asked to restart BlueBubbles.

Enable "BlueBubbles."

Before leaving the "Security & Privacy" Settings, go to the "Accessibility" section and enable BlueBubbles as well.

Enable "BlueBubbles" to have "Accessibility" access.

At some point during this initial setup, you will also be asked to grant BlueBubbles access to your contacts. Click "OK" to allow that.

Click "OK" to allow access.

Here's where things get a bit complicated. BlueBubbles uses Google Firebase Cloud Messaging for notifications to your devices. This allows BlueBubbles to not require a connection to the server at all times, which means you get notifications even when the app is running in the background and it doesn't use as much battery.

To get started, go to the Google Firebase Console and log in with your Google account. Click "Create a Project" and name it "BlueBubblesApp." You do not need to enable Google Analytics for the project.

Name the project "BlueBubblesApp."

Next, under "Build" in the sidebar menu, go to Realtime Database > Create Database.

Click "Create Database."

Choose your location then click Next > Enable with "Start in Locked Mode" selected.

Click "Enable."

Next, click the gear icon next to "Project Overview" in the sidebar menu and go to Project Settings > Service Accounts > Create Service Account > click "Generate New Private Key" and save the file to your Mac.

Select "Generate New Private Key."

Now switch to the "Cloud Messaging" tab and click the three-dot menu icon for "Cloud Messaging Legacy API" and go to Manage API in Cloud Console > Enable.

Click "Enable."

Drag and drop the JSON file we downloaded that includes "firebase-adminsdk" in the filename to the BlueBubbles app.

Drag the json file to BlueBubbles.

Back on the Project Settings menu on the Firebase website, go to the "General" tab. Click the Android icon at the bottom of the page.

Click the Android icon.

Enter "com.[yourname].bluebubbles for the "Android Package Name" and click "Register App" to download the google-services.json file.

Name the package and "Register App."

Now we can drag the google-services.json file to the BlueBubbles app as well. Click "Next" after you've done that.

Drag the json file to BlueBubbles.

Enter a strong password for your server and click the save icon. Click the "Next" button when you're done.

Create a password and save it. Click "Next."

The next screen is for "Private API Setup." This is one of the most advanced features of BlueBubbles. If you'd like to be able to send reactions, replies, subjects, see typing indicators, and effects, you'll need to follow the instructions on this page. Note that this requires disabling some extra security measures on your Mac.

Advanced Private API features.

The last thing to do is enable "Startup with macOS" and "Keep macOS Awake" to ensure the BlueBubbles server stays running. You can also have BlueBubbles automatically check for and install updates.

Make sure you Mac stays running.

Connect the Server to the BlueBubbles Apps

With the server up and running we can connect the Android and Windows BlueBubbles apps to start using iMessage! We'll start with the Android app, which can be downloaded from here.

Click the Android icon.

You'll need to give the app some permissions when you open it for the first time and make sure you're signed in with your Apple ID with iMessage on your Mac.

Give BlueBubbles permissions.

Next, back in the BlueBubbles app on your Mac, click the QR code icon, and then scan it with the phone app.

Generate the QR code to scan.
Scan the QR code with your phone.

Tap "Start Sync" in the phone app after scanning the QR code.

Tap "Start Sync."

After the sync is complete, tap "Finish."

Tap "Finish."

You're now using iMessage on Android! You can find a lot of customization options under the three-dot menu on the conversations screen. If you enabled the Private API features, you'll want to toggle those on.

Go to the "Settings" for more options.

The Windows app can be found on the BlueBubbles downloads page as well.

Select the "Desktop" app.

Setting up the desktop app is the same as the Android app, but you probably won't be able to scan a QR code with your PC. Instead, you'll need to enter the server details manually. You can find those in the Android app under Settings > Connection & Server (same password we created earlier).

Enter the server details and click "Connect."

Now you've got the same BlueBubbles experience as your phone on your Windows PC! Note that there is also a BlueBubbles web app that can be set up in the same way.

Things to Know

One important thing to understand is this essentially turns iMessage into a separate instant messaging service. All of your iMessage conversations will be in the BlueBubbles app, while standard SMS/RCS conversations will still be in your device's default texting app.

The second thing to know is this is an inherently hacky workaround to get something working that was never intended to work this way. Therefore, you will run into issues. The good news is the BlueBubbles community is very active and helpful on Reddit and Discord. The official BlueBubbles website is also a good resource for up-to-date information.

BlueBubbles is not a perfect solution and it certainly takes some effort to set up. However, it is a solution and you should only have to go through this process once. It's pretty dang amazing once you get everything working.

Related: How to Set Your Default Texting App on Android