
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
capacitor-thermal-printer-bluetooth
Advanced tools
High-speed, reliable bluetooth ESC thermal printer and encoder Capacitor plugin.
capacitor-thermal-printer-bluetooth
High-speed, reliable bluetooth ESC thermal printer and encoder Capacitor plugin. Both on Android and iOS!
npm install capacitor-thermal-printer-bluetooth --save
npx cap sync
Open your iOS project in Xcode, then:
node_modules/capacitor-thermal-printer-bluetooth/ios/Plugin/Resources/ble_serial.plist file and select itAnd voilà! You're all set!
Make sure to check the Ionic Angular example in the example folder.
import { CapacitorThermalPrinter } from 'capacitor-thermal-printer-bluetooth';
const device = await CapacitorThermalPrinter.connect({
address: 'XX:XX:XX:XX:XX:XX',
});
if (device === null) {
console.log('Woops, failed to connect!');
} else {
console.log('Connected!', device.name, device.address);
}
You can also use the startScan method to discover nearby devices.
CapacitorThermalPrinter.addListener('discoverDevices', (devices) => {
console.log('Discovered devices list:', devices);
});
await CapacitorThermalPrinter.startScan();
Version 0.2.8+ introduces support for managing multiple simultaneous Bluetooth connections. You can now connect to several printers at once and route print jobs independently to each device.
The plugin maintains separate connection contexts per printer. Each successful connect call returns a unique connectionId that you can use to direct print jobs.
Quick example:
// Connect to multiple printers
const kitchen = await CapacitorThermalPrinter.connect({ address: 'AA:BB:CC:DD:EE:01' });
const bar = await CapacitorThermalPrinter.connect({ address: 'AA:BB:CC:DD:EE:02' });
// Create scoped sessions for each printer
const kitchenPrinter = CapacitorThermalPrinter.useConnection(kitchen!.connectionId);
const barPrinter = CapacitorThermalPrinter.useConnection(bar!.connectionId);
// Send different content to each printer independently
await kitchenPrinter.begin().text('Kitchen Order #42\n').write();
await barPrinter.begin().text('Bar Order #15\n').write();
// List all active connections
const { connections } = await CapacitorThermalPrinter.listConnections();
console.log(`Connected to ${connections.length} printers`);
// Optionally set a default printer for direct method calls
CapacitorThermalPrinter.setActiveConnection(bar!.connectionId);
await CapacitorThermalPrinter.begin().text('Uses bar printer').write();
Key APIs:
listConnections() — Returns all active printer connections with their IDs, addresses, and names.useConnection(connectionId) — Creates a scoped session bound to a specific printer.setActiveConnection(connectionId) — Sets the default printer for direct plugin method calls.getActiveConnection() — Returns the currently active connection ID (or null).disconnect({ connectionId }) — Disconnects a specific printer (or the active one if omitted).Events:
The plugin emits connected and disconnected events with the connectionId so you can track connection state changes per device:
CapacitorThermalPrinter.addListener('connected', (device) => {
console.log(`Printer connected: ${device.name} (${device.connectionId})`);
});
CapacitorThermalPrinter.addListener('disconnected', (data) => {
console.log(`Printer disconnected: ${data.connectionId}`);
});
await CapacitorThermalPrinter.begin()
.align('center')
.image('./assets/Logo-Black.png')
.bold()
.underline()
.text('The amazing store\n')
.doubleWidth()
.text('RECEIPT\n')
.clearFormatting()
.text('Item 1: $10.00\n')
.text('Item 2: $15.00\n')
.align('right')
.text('Total: $25.00\n')
.align('center')
.qr('https://example.com')
.barcode('UPC_A', '123456789012')
.cutPaper()
.write()
.then(() => console.log('Printed!'))
.catch((e) => console.error('Failed to print!', e));
Check out the Docs!
If you encounter any issues with this plugin, please report them at Issues
We're open to, and grateful for, any contributions made! Make sure to check Contribution Guidelines
FAQs
High-speed, reliable bluetooth ESC thermal printer and encoder Capacitor plugin.
We found that capacitor-thermal-printer-bluetooth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.