The most versatile way to trigger a print: the btprinterplus:// URI scheme underneath both JavaScript Interface and Intent Printer - open it from literally anywhere that can open a URI: a browser, another app, a QR code, an SMS, an email, or ADB.
btprinterplus://print?content=<url-encoded text>&placeholder_<name>=<value>&placeholder_...&strict=true
content is required and must be URL-encoded. Any number of placeholder_<name> params can follow to fill in [[name]] tokens inside content. strict is optional - see Strict Mode below.
btprinterplus://print?content=Hello%20World
content supports the same markup syntax as the other integrations: **bold**, [center]/[right]/[small] blocks, [qr]...[/qr], and an 8+ dash divider line.
btprinterplus://print?content=%5Bcenter%5D**MY%20STORE**%5B%2Fcenter%5D%0A--------------------------------%0A**Total%3A%20%2410.50**
(decoded: [center]**MY STORE**[/center]\n--------------------------------\n**Total: $10.50**)
btprinterplus://print?content=Hello%20%5B%5Bname%5D%5D%2C%0AYour%20order%20%23%5B%5Border%5D%5D%20is%20ready.&placeholder_name=Arun&placeholder_order=A-1042
(decoded content: Hello [[name]],\nYour order #[[order]] is ready., with placeholder_name=Arun and placeholder_order=A-1042)
#[[dynamic]] tokens with no matching placeholder_ param instead prompt the user for input on-screen, same as Intent Printer.
Add &strict=true to render content as a dithered image instead of raw ESC/POS text - pixel-for-pixel what a formatted on-screen template would look like, independent of whatever the phone's Settings screen has Strict Mode set to. Slower and heavier than normal printing, so use it when formatting fidelity matters more than speed.
btprinterplus://print?content=%5Bcenter%5D**MY%20STORE**%5B%2Fcenter%5D&strict=true
| Source | How |
|---|---|
| Web page | window.location.href = "btprinterplus://..." or an <a> tag - see JavaScript Interface |
| Another Android app | startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("btprinterplus://..."))) |
| QR code | Encode the full URI as a QR code; scanning it with the camera opens the app directly |
| SMS / email / chat | The URI renders as a tappable link on most Android messaging apps |
| ADB (testing) | adb shell am start -a android.intent.action.VIEW -d "btprinterplus://print?content=Test" |
| AI agent (MCP) | The generate_print_link MCP tool builds this URL for you - see MCP |