diff --git a/web/chat.html b/web/chat.html
index e142f3c..b3aa45c 100644
--- a/web/chat.html
+++ b/web/chat.html
@@ -452,8 +452,8 @@ var QRCode;(function(){function QR8bitByte(data){this.mode=QRMode.MODE_8BIT_BYTE
/* ============================================================== *
* constants (mirror include/zebra.h) *
* ============================================================== */
-const ZEBRA_VOL_MARK = 0.80;
-const ZEBRA_VOL_SPACE = 0.20;
+const ZEBRA_VOL_MARK = 0.95; /* near full-scale (no clip) for max margin */
+const ZEBRA_VOL_SPACE = 0.10; /* low but non-zero so the tone stays present */
/* Link baud for the whole audio modem (handshake + data). Tunable via ?baud=N
* because the WebRTC Opus path encodes in 20ms frames and smears bit edges:
* lower baud = more audio quanta per symbol = survives the smear, but slower.