{"record":{"id":"68d9ac0eadc8b811","repo":"unclecode/crawl4ai","slug":"chunking-strategy-must-be-an-instance-of-chunkings","errorCode":null,"errorMessage":"chunking_strategy must be an instance of ChunkingStrategy","messagePattern":"chunking_strategy must be an instance of ChunkingStrategy","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"crawl4ai/async_configs.py","lineNumber":1847,"sourceCode":"        # Robots.txt Handling Parameters\n        self.check_robots_txt = check_robots_txt\n\n        # User Agent Parameters\n        self.user_agent = user_agent\n        self.user_agent_mode = user_agent_mode\n        self.user_agent_generator_config = user_agent_generator_config\n\n        # Validate type of extraction strategy and chunking strategy if they are provided\n        if self.extraction_strategy is not None and not isinstance(\n            self.extraction_strategy, ExtractionStrategy\n        ):\n            raise ValueError(\n                \"extraction_strategy must be an instance of ExtractionStrategy\"\n            )\n        if self.chunking_strategy is not None and not isinstance(\n            self.chunking_strategy, ChunkingStrategy\n        ):\n            raise ValueError(\n                \"chunking_strategy must be an instance of ChunkingStrategy\"\n            )\n        if self.markdown_generator is not None and not isinstance(\n            self.markdown_generator, MarkdownGenerationStrategy\n        ):\n            hint = \"\"\n            if isinstance(self.markdown_generator, dict):\n                hint = (\n                    ' The JSON format must be {\"type\": \"<ClassName>\", \"params\": {...}}.'\n                    ' Note: \"params\" is required — \"options\" or other keys are not recognized.'\n                )\n            raise ValueError(\n                \"markdown_generator must be an instance of MarkdownGenerationStrategy, \"\n                f\"got {type(self.markdown_generator).__name__}.{hint}\"\n            )\n\n        # Set default chunking strategy if None\n        if self.chunking_strategy is None:","sourceCodeStart":1829,"sourceCodeEnd":1865,"githubUrl":"https://github.com/unclecode/crawl4ai/blob/7e801521428ee12509994d39151006f64055ebe3/crawl4ai/async_configs.py#L1829-L1865","documentation":"CrawlerRunConfig validation: chunking_strategy must be an instance of ChunkingStrategy (e.g. RegexChunking, HtmlChunking) or None. It is used internally for content splitting before extraction; wrong types fail fast here rather than mid-crawl.","triggerScenarios":"Passing chunking_strategy=\"RegexChunking\", a dict, or the class object RegexChunking instead of RegexChunking().","commonSituations":"JSON-driven configuration pipelines that pass strings; noting that if you pass None a default RegexChunking() is assigned for you.","solutions":["Instantiate: chunking_strategy=RegexChunking()","Or omit it — None gets replaced by the default RegexChunking()","For dict configs use {'type': 'RegexChunking', 'params': {...}} with CrawlerRunConfig.from_kwargs"],"exampleFix":"// before\ncfg = CrawlerRunConfig(chunking_strategy=RegexChunking)  # class, not instance\n// after\ncfg = CrawlerRunConfig(chunking_strategy=RegexChunking())","handlingStrategy":"type-guard","validationCode":"from crawl4ai.chunking_strategy import ChunkingStrategy\n\nif not isinstance(chunking_strategy, ChunkingStrategy):\n    chunking_strategy = None  # default RegexChunking() is applied","typeGuard":"from crawl4ai.chunking_strategy import ChunkingStrategy\n\ndef is_chunking_strategy(v) -> bool:\n    return v is None or isinstance(v, ChunkingStrategy)","tryCatchPattern":null,"preventionTips":["Omit chunking_strategy unless you need custom chunking","Instantiate: RegexChunking(), not RegexChunking"],"tags":["validation","chunking","configuration","type-error"],"backgroundTag":null,"analyzedSha":"7e801521428ee12509994d39151006f64055ebe3","analyzedAt":"2026-08-14T20:46:20.673Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}