This paper presents Innamark, a novel method for hiding information within text, addressing the growing difficulty in distinguishing between text generated by large-scale language models (LLMs) and human-authored text. Unlike existing language- or format-based methods, which either alter the meaning of the text or are inapplicable to unformatted text, Innamark can hide any byte-encoded sequence within a sufficiently long text while preserving the text's meaning by replacing existing whitespace characters with visually similar Unicode whitespace characters. It provides a multi-platform library, command-line tools, and a web interface implemented in Kotlin, allowing users to configure compression, encryption, hashing, and error correction by specifying the structure of a secret message. Experimental results using a dataset of 1,000,000 Wikipedia articles demonstrate the robustness of Innamark and the undetectable nature of its watermark, which is undetectable to humans. Furthermore, we discuss limitations regarding embedding capacity and the robustness of the algorithm, as well as future research directions.