{
  "title": "Remove invisible characters",
  "human_url": "https://happytails.ai/en/text-tools/remove-invisible-characters/",
  "agent_url": "https://happytails.ai/agents/en/text-tools/remove-invisible-characters/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/text-tools/remove-invisible-characters.md",
  "content": "Remove invisible characters\nFind and remove hidden formatting characters that get in the way.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Remove invisible characters\nPaste the affected text. Common zero-width and directional formatting controls are removed automatically. Only enable the joiner option if you want to break joined emoji and script forms.\nThe hidden zero-width space between hello and the visible space is removed; the visible space remains.\nUseful next steps\nUnicode normalizer\nRemove extra spaces\nCharacter counter\nHow to use it\nPaste the affected text. Common zero-width and directional formatting controls are removed automatically. Only enable the joiner option if you want to break joined emoji and script forms.\nTry a small example\nThe hidden zero-width space between hello and the visible space is removed; the visible space remains.\nWhat to know\nRemoves common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Unicode normalizer",
      "url": "https://happytails.ai/en/text-tools/normalize-unicode/"
    },
    {
      "name": "Remove extra spaces",
      "url": "https://happytails.ai/en/text-tools/remove-extra-spaces/"
    },
    {
      "name": "Character counter",
      "url": "https://happytails.ai/en/text-tools/character-counter/"
    }
  ],
  "tool": {
    "id": "remove-invisible-characters",
    "category": "text-tools",
    "built": true,
    "requirements": "Removes common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.",
    "implementation": {
      "fields": [
        {
          "key": "joiners",
          "label": "Also remove zero-width joiners and non-joiners",
          "value": false,
          "type": "checkbox"
        }
      ],
      "live": true,
      "note": "Removes common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.",
      "experience": {
        "automatic": true,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "Your text",
        "placeholder": "Type or paste your input…",
        "help": "Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.",
        "action": null
      },
      "mode": "automatic",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Remove invisible characters\n\n- Human page: https://happytails.ai/en/text-tools/remove-invisible-characters/\n- Markdown: https://happytails.ai/en/text-tools/remove-invisible-characters.md\n- Structured JSON: https://happytails.ai/agents/en/text-tools/remove-invisible-characters/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `remove-invisible-characters` |\n| Category | text-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRemoves common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.\n\n### Inputs and settings\n\nText input: Your text.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\nType or paste your input…\n```\n\nChange the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `joiners` | Also remove zero-width joiners and non-joiners | checkbox | false |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nRemoves common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"remove-invisible-characters\",\n  \"category\": \"text-tools\",\n  \"built\": true,\n  \"requirements\": \"Removes common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"joiners\",\n        \"label\": \"Also remove zero-width joiners and non-joiners\",\n        \"value\": false,\n        \"type\": \"checkbox\"\n      }\n    ],\n    \"live\": true,\n    \"note\": \"Removes common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"Your text\",\n      \"placeholder\": \"Type or paste your input…\",\n      \"help\": \"Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nFind and remove hidden formatting characters that get in the way.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Remove invisible characters\n\n1. Paste the affected text. Common zero-width and directional formatting controls are removed automatically. Only enable the joiner option if you want to break joined emoji and script forms.\n2. The hidden zero-width space between hello and the visible space is removed; the visible space remains.\n\n## Useful next steps\n\n- [Unicode normalizer](https://happytails.ai/en/text-tools/normalize-unicode/) ([Markdown](https://happytails.ai/en/text-tools/normalize-unicode.md))\n\n- [Remove extra spaces](https://happytails.ai/en/text-tools/remove-extra-spaces/) ([Markdown](https://happytails.ai/en/text-tools/remove-extra-spaces.md))\n\n- [Character counter](https://happytails.ai/en/text-tools/character-counter/) ([Markdown](https://happytails.ai/en/text-tools/character-counter.md))\n\n## How to use it\n\nPaste the affected text. Common zero-width and directional formatting controls are removed automatically. Only enable the joiner option if you want to break joined emoji and script forms.\n\n### Try a small example\n\nThe hidden zero-width space between hello and the visible space is removed; the visible space remains.\n\n### What to know\n\nRemoves common invisible formatting controls while keeping spaces and line breaks. Joiners are preserved by default because they affect emoji and scripts. Removing bidirectional controls can change displayed text order.\n"
}