[NEW PLUGIN] Thermal Printer Plugin - USB & Bluetooth 🖨️

Hey Bubble community!

I’m excited to share two new plugins designed to make thermal printing easy, flexible, and fully customizable directly from your Bubble app.
These plugins are built for printing via USB or Bluetooth using commands, giving you full control over the output.

:electric_plug: Thermal Printer – USB (ESC/POS)

Print directly via a connected USB thermal printer using ESC/POS commands.

:white_check_mark: Features:

  • Supports ESC/POS thermal printers
  • Connect via USB
  • Use the print action with space-separated ESC/POS commands
  • Add images, titles, tables, totals, barcodes, and QR codes
  • Full customization of the printed content

:link: Plugin Page (USB) : Thermal Printer USB ESC-POS Plugin | Bubble
:link: DEMO (USB Demo): https://thermal-printer-bluetooth.bubbleapps.io/version-test

:antenna_bars: Thermal Printer – Bluetooth

Print wirelessly to any Bluetooth ESC/POS-compatible printer.

:white_check_mark: Features:

  • Connect via Bluetooth
  • Command support
  • Same print action for full control over layout and formatting
  • Works on supported devices (Chrome, Android, etc.)

:link: Plugin Page (Bluetooth): Thermal Printer Bluetooth Plugin | Bubble
:link: DEMO (Bluetooth Demo): https://thermal-printer-bluetooth.bubbleapps.io/version-test

:speech_balloon: You have complete freedom to create the receipt structure:
Header image, product table, totals, barcode, footer — you design it, it prints it.

If you have questions, ideas, or need help getting started, feel free to reply!

:receipt: Let your Bubble app print beautifully and easily with ESC/POS!

2 Likes

:new_button: Changelog – v1.1 (Thermal Printer USB ESC-POS)

Date: July 2, 2025

What’s New:

:small_blue_diamond: New Action: Print Element
You can now print the content of any visual element on your Bubble page by simply providing its HTML element ID. This action captures the element as an image and sends it directly to your thermal printer, making the process easier, more flexible, and highly customizable.

:white_check_mark: Benefits:

  • No need to manually build command strings.
  • Print exactly what you see on screen, including text, images, tables, QR codes, and more.
  • Fully customizable using Bubble’s design tools and CSS.
  • Supports SVGs, icons, and rich HTML content.

:pushpin: How to Use:
Just add the Print Element action in your workflow, input the element’s ID, and print — it’s that simple.

What a cool plugin! I’m always amazed at the use cases people have :slight_smile:

If I was you, I’d price it much higher!

You look to be really knowledgable on this topic, have put a lot of effort into creating a great plugin and I (perhaps incorrectly) assume there is a relatively small percentage of Bubble users building applications that use thermal printers.

I would quadruple it at a minimum. Especially for something that is transaction /POS adjacent and for something you’re simplifying so much for the user. Check out Stripe Connect - Marketplace Plugin | Bubble from @alexcooney5 as an example of great pricing.

1 Like

Thank you so much for the price suggestion; I’ll keep it in mind. These plugins came from my work on a Bubble app where I needed to print tickets with a thermal printer.

Hi ,
I subscribed your plugin for my app . It is meeting my requirement but not fully. So need your help.
a. While I am able print on BT thermal printer from Chrome in Windows m/c, it throws error on Chrome browser in mobile ( currently checked with iOS).


b. Also tried - New action : Print element but not able to configure it . While print instructions like line(‘my name is john’); is working but dynamic command as Group mode’s office’s name is not work. I did not find details of doing this setup as i want to print exactly what is on the screen popup. Can you please help advise. Thanks you. @josealex170702

Will this plugin work with Brother QL Thermal Label Printers? Is it printing via raster, because if so won’t this require windows users to convert their drivers to libusb?

I have no way to test the plugin on iOS because I have only tested it on Android using Chrome Browser, and it works. I’m going to look for a way to test it on iOS since I don’t have an Apple phone. For dynamic commands, it should work, check the demo again, I added an example for that.

You should be able to connect it via USB to the computer using the printer’s own driver without needing to switch to the libusb driver. The only requirement is to share the printer with the name “ESC-POS” and have the ESCPosPrinter program open at the time of printing

:new_button: Changelog – v1.7 (Thermal Printer Bluetooth)

Changelog:

  • Added a new action to print webpage elements by their ID.
  • Introduced a new print command: image('url', width, height);.
  • Added the option to switch the Image Mode from Raster to Column.

1 Like

Very nice, this looks super useful

1 Like

Hi @josealex170702 , Thanks for your earlier update.

  1. I tried using dynamic commands but repeating group is not printing.
  2. When single line entry in multiline input , it is printed but when more then one line , it is not printed.
  3. Also when I try to print using element id , it prints but size is very small.

Also, let me know if there is any update on printing from chrome browser on an apple phone. Thanks.

@josealex170702 Hi , Wanted to check if there is a iOS fix available for this plugin/any timeline by when you can look into it . Thanks