{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/robust-multi-bit-text-watermark-with-llm","title":"Robust Multi-bit Text Watermark with LLM-based Paraphrasers","arxiv_id":"2412.03123","date":"2024-12-04","proceeding":null,"authors":["Xiaojun Xu","Jinghan Jia","Yuanshun Yao","Yang Liu","Hang Li"],"abstract":"We propose an imperceptible multi-bit text watermark embedded by paraphrasing with LLMs. We fine-tune a pair of LLM paraphrasers that are designed to behave differently so that their paraphrasing difference reflected in the text semantics can be identified by a trained decoder. To embed our multi-bit watermark, we use two paraphrasers alternatively to encode the pre-defined binary code at the sentence level. Then we use a text classifier as the decoder to decode each bit of the watermark. Through extensive experiments, we show that our watermarks can achieve over 99.99\\% detection AUC with small (1.1B) text paraphrasers while keeping the semantic information of the original sentence. More importantly, our pipeline is robust under word substitution and sentence paraphrasing perturbations and generalizes well to out-of-distributional data. We also show the stealthiness of our watermark with LLM-based evaluation. We open-source the code: https://github.com/xiaojunxu/multi-bit-text-watermark.","url_abs":"https://arxiv.org/abs/2412.03123v1","url_pdf":"https://arxiv.org/pdf/2412.03123v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"robust-multi-bit-text-watermark-with-llm","repo_url":"https://github.com/xiaojunxu/multi-bit-text-watermark","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"decoder","task_name":"Decoder"},{"task_slug":"sentence","task_name":"Sentence"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2412.03123","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2412.03123"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xiaojunxu/multi-bit-text-watermark","reach":null}],"summary":{"ran":1,"ran_violates":3},"by_repo_kind":{"official":{"samples":4,"ran":4,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":4,"samples":[{"code_sha256_prefix":"91cf034686808f14","entry":"DM_generate_with_key","repo":"xiaojunxu/multi-bit-text-watermark","repo_kind":"official","path":"gen_utils.py","file_url":"https://github.com/xiaojunxu/multi-bit-text-watermark/blob/HEAD/gen_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"91cf034686808f14"}},{"code_sha256_prefix":"617bf489dc10bb01","entry":"is_cn_split_point","repo":"xiaojunxu/multi-bit-text-watermark","repo_kind":"official","path":"gen_utils.py","file_url":"https://github.com/xiaojunxu/multi-bit-text-watermark/blob/HEAD/gen_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"617bf489dc10bb01"}},{"code_sha256_prefix":"4c5f835ddbe24f82","entry":"is_en_split_point","repo":"xiaojunxu/multi-bit-text-watermark","repo_kind":"official","path":"gen_utils.py","file_url":"https://github.com/xiaojunxu/multi-bit-text-watermark/blob/HEAD/gen_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4c5f835ddbe24f82"}},{"code_sha256_prefix":"e7faa4605a0a5068","entry":"is_split_point","repo":"xiaojunxu/multi-bit-text-watermark","repo_kind":"official","path":"gen_utils.py","file_url":"https://github.com/xiaojunxu/multi-bit-text-watermark/blob/HEAD/gen_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e7faa4605a0a5068"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}