{"id":890,"library":"langchain-text-splitters","title":"LangChain Text Splitters","description":"LangChain Text Splitters (current version 1.1.1) provides a comprehensive set of utilities for breaking down large text documents into smaller, manageable chunks. This is crucial for applications like Retrieval-Augmented Generation (RAG) and fitting content within Language Model context windows. As an integral part of the LangChain ecosystem, it maintains an active and rapid release cadence, closely aligned with other LangChain libraries.","status":"active","version":"1.1.1","language":"python","source_language":"en","source_url":"https://github.com/langchain-ai/langchain","tags":["langchain","text splitting","LLM","RAG","document processing"],"install":[{"cmd":"pip install langchain-text-splitters","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Core utilities and interfaces for LangChain components.","package":"langchain-core","optional":false}],"imports":[{"note":"Text splitters were moved to a dedicated package. Old `langchain.text_splitter` imports are deprecated or removed.","wrong":"from langchain.text_splitter import RecursiveCharacterTextSplitter","symbol":"RecursiveCharacterTextSplitter","correct":"from langchain_text_splitters import RecursiveCharacterTextSplitter"},{"symbol":"CharacterTextSplitter","correct":"from langchain_text_splitters import CharacterTextSplitter"},{"symbol":"MarkdownHeaderTextSplitter","correct":"from langchain_text_splitters import MarkdownHeaderTextSplitter"}],"quickstart":{"code":"from langchain_text_splitters import RecursiveCharacterTextSplitter\n\n# Example long text\nlong_text = (\n    \"LangChain is a framework designed to simplify the creation of applications using large language models. \"\n    \"It provides tools for chaining together different components, making it easier to build complex LLM workflows. \"\n    \"Text splitting is a fundamental step in processing long documents for LLMs, ensuring that chunks fit within context windows and maintain semantic coherence. \"\n    \"The RecursiveCharacterTextSplitter is often the recommended default for general-purpose text.\"\n)\n\n# Initialize the splitter\n# chunk_size: maximum size of each chunk (in characters by default)\n# chunk_overlap: number of characters to overlap between consecutive chunks\ntext_splitter = RecursiveCharacterTextSplitter(\n    chunk_size=100,\n    chunk_overlap=20\n)\n\n# Split the text\nchunks = text_splitter.split_text(long_text)\n\n# Print the chunks\nfor i, chunk in enumerate(chunks):\n    print(f\"Chunk {i+1}:\\n{chunk}\\n---\")\n","lang":"python","description":"Demonstrates the basic usage of the `RecursiveCharacterTextSplitter`, the most commonly recommended text splitter. It shows how to initialize the splitter with `chunk_size` and `chunk_overlap`, and then split a long string into smaller text chunks."},"warnings":[{"fix":"Update all text splitter imports from `from langchain.text_splitter import ...` to `from langchain_text_splitters import ...`.","message":"The text splitter modules have been moved from `langchain.text_splitter` to the standalone `langchain-text-splitters` package. Direct imports from `langchain.text_splitter` will no longer work.","severity":"breaking","affected_versions":"<1.0.0 (old LangChain) to >=1.0.0 (new LangChain/langchain-text-splitters)"},{"fix":"For a single string, use `text_splitter.split_text(your_string)`. If you intend to pass multiple strings to `create_documents`, ensure they are wrapped in a list: `text_splitter.create_documents([your_string])`.","message":"When using `create_documents()` method, it expects a *list* of strings (or `Document` objects). Passing a single string will result in each character being treated as a separate document.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Understand that `chunk_size` is a guideline. For more precise length control (e.g., token-based), consider `TokenTextSplitter` or custom `length_function` with an appropriate tokenizer.","message":"The `chunk_size` parameter for character-based splitters specifies the *target* maximum chunk size. Due to the splitter's logic (e.g., trying to split on specific separators first), the actual chunk length may not be exactly `chunk_size`.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always strive to keep all `langchain-` prefixed packages within the same major version series (e.g., all `1.x.x` or all `0.3.x`) to ensure compatibility.","message":"Mixing major versions of LangChain ecosystem packages (e.g., `langchain-text-splitters==1.x.x` with `langchain-core==0.3.x`) can lead to compatibility issues and unexpected behavior.","severity":"gotcha","affected_versions":"All versions where major versions of LangChain packages diverge"},{"fix":"Always consult the specific documentation or API reference for specialized text splitters to understand their unique behavior and interfaces.","message":"Some specialized splitters, like `MarkdownHeaderTextSplitter` and `HTMLHeaderTextSplitter`, do not inherit from the base `TextSplitter` class. This means they might have slightly different method signatures or expectations.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-05-12T20:58:40.520Z","next_check":"2026-06-27T00:00:00.000Z","problems":[{"fix":"First, ensure `langchain-text-splitters` is installed: `pip install -U langchain-text-splitters`. Then, update your import statement: `from langchain_text_splitters import RecursiveCharacterTextSplitter`.","cause":"The `RecursiveCharacterTextSplitter` and other text splitters have been moved from the `langchain` package to the dedicated `langchain_text_splitters` package as part of LangChain's modularization.","error":"ModuleNotFoundError: No module named 'langchain.text_splitter' OR ImportError: cannot import name 'RecursiveCharacterTextSplitter' from 'langchain.text_splitter'"},{"fix":"Install the package using pip: `pip install langchain-text-splitters`.","cause":"The `langchain-text-splitters` package, which contains the text splitting utilities, has not been installed in your Python environment.","error":"ModuleNotFoundError: No module named 'langchain_text_splitters'"},{"fix":"Ensure you have `langchain-text-splitters` installed and are importing from the correct module: `pip install -U langchain-text-splitters` and then `from langchain_text_splitters import RecursiveCharacterTextSplitter`.","cause":"This error occurs when an older version of LangChain is installed, or the `langchain-text-splitters` package is not correctly referenced, leading to the `RecursiveCharacterTextSplitter` class not being found in the `langchain.text_splitter` module.","error":"AttributeError: module 'langchain.text_splitter' has no attribute 'RecursiveCharacterTextSplitter'"},{"fix":"Use `RecursiveCharacterTextSplitter` and set `is_separator_regex=True` with your regular expression separators: `from langchain_text_splitters import RecursiveCharacterTextSplitter; text_splitter = RecursiveCharacterTextSplitter(separators=[r'\\n\\n', r'\\n'], is_separator_regex=True)`.","cause":"The `RegexTextSplitter` class has been deprecated and its functionality is now integrated into `RecursiveCharacterTextSplitter` using the `is_separator_regex` parameter.","error":"ImportError: cannot import name 'RegexTextSplitter' from 'langchain.text_splitter'"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.1.2","cli_name":"","cli_version":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","installed_version":"0.3.11","pypi_latest":"1.1.2","is_stale":true,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.37,"mem_mb":21,"disk_size":"63.5M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.4,"mem_mb":20.9,"disk_size":"62.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.6,"import_time_s":1.01,"mem_mb":20.8,"disk_size":"72M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.94,"mem_mb":20.9,"disk_size":"71M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.63,"mem_mb":22.6,"disk_size":"68.8M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.8,"mem_mb":22.5,"disk_size":"67.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.6,"import_time_s":1.46,"mem_mb":22.6,"disk_size":"77M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.38,"mem_mb":22.5,"disk_size":"76M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.83,"mem_mb":21.7,"disk_size":"59.9M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.9,"mem_mb":21.6,"disk_size":"58.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.4,"import_time_s":1.8,"mem_mb":21.7,"disk_size":"68M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.82,"mem_mb":21.6,"disk_size":"67M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.62,"mem_mb":22.5,"disk_size":"59.6M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.84,"mem_mb":22.4,"disk_size":"58.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.5,"import_time_s":1.68,"mem_mb":22.5,"disk_size":"68M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.73,"mem_mb":22.4,"disk_size":"67M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":1.77,"mem_mb":24.3,"disk_size":"60.3M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.7,"mem_mb":24.3,"disk_size":"60.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.2,"import_time_s":1.65,"mem_mb":24.3,"disk_size":"68M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"langchain-text-splitters","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":1.55,"mem_mb":24.4,"disk_size":"68M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":null,"tag_description":null,"results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}