Voiceflow named a 2026 Best Software Award winner by G2
Read now
ChatterBot went quiet for years. The library that a lot of people learned to build their first Python chatbot with had its last real release back in 2020, and for a while the honest advice was "it's a great teaching tool, but it's frozen in time."
That changed in 2025. ChatterBot got picked back up, and the current release runs on modern Python with a proper spaCy pipeline underneath it. So if you searched for it expecting an abandoned repo, the situation is better than you think. But "maintained again" is not the same as "the right tool for your production agent," and that distinction is the whole point of this guide.
Here is what we will cover: what ChatterBot actually is in 2026, how it works, when it is the right call, how to build and train one with real code, and where you should reach for something else. If you want to skip the library route entirely and build a production agent, we will also show you how Voiceflow fits.
ChatterBot is an open-source Python library for building conversational agents. You give it example conversations, it learns the patterns, and it responds to new input by finding the closest match it has seen before. It is a retrieval-and-matching engine at heart, not a large language model.
The 2025 revival matters here. The current release (v1.2.x) requires Python 3.10 to 3.14, uses spaCy 3.8+ for language processing, moved to SQLAlchemy 2.0 for storage, and added CSV and JSON trainers plus experimental support for wiring in an LLM. So the "Python 3.4 and up" instructions you will find in older tutorials are out of date. Check the official docs for the exact setup steps that match your version.
ChatterBot handles a message in four steps:
The important takeaway: by default, ChatterBot answers by matching, not by generating. It picks the best known reply rather than writing a new one from scratch. That is the opposite of how an LLM-based agent works, and it explains most of ChatterBot's strengths and limits.
Short answer: yes, for the right job.
ChatterBot is a good fit when you are learning how chatbots and NLP work under the hood, when you want a lightweight rule-based bot that runs offline with no API bills, or when you need a quick prototype and you are comfortable in Python. It is free, the code is readable, and you control everything.
It is the wrong fit when you need production reliability at scale, real reasoning over messy questions, grounded answers from your own documents, or an agent that non-engineers can maintain. The revival modernized the plumbing, but the core is still similarity matching. If your users expect the fluency of an agentic AI system, ChatterBot on its own will feel thin.
That is not a knock on the library. It is a scoping decision. Match the tool to the job.
{{blue-cta}}
Here is a working path from install to a trained bot. The APIs below are stable across the 1.x line, and if you want a second walkthrough, our Python chatbot guide covers the same ground.
Make sure you are on Python 3.10 or newer, then install the library and the corpus of sample conversations:
pip install chatterbot chatterbot-corpusDepending on your version, spaCy may need a language model. If you hit a model error on first run, install the small English model:
python -m spacy download en_core_web_smCreate a ChatBot instance, then train it. The corpus trainer gives you a general-purpose bot out of the box:
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot("Buddy")
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train("chatterbot.corpus.english")
response = chatbot.get_response("Hello, how are you?")
print(response)For your own domain, use the ListTrainer to teach it specific input-and-response pairs:
from chatterbot.trainers import ListTrainer
list_trainer = ListTrainer(chatbot)
list_trainer.train([
"What are your hours?",
"We are open Monday to Friday, 9am to 5pm.",
"How do I reset my password?",
"Go to Settings, then Security, then Reset Password.",
])ChatterBot uses a storage adapter to persist data. The SQL adapter is the common choice and works with SQLite, MySQL, or PostgreSQL:
from chatterbot import ChatBot
chatbot = ChatBot(
"Buddy",
storage_adapter="chatterbot.storage.SQLStorageAdapter",
database_uri="sqlite:///database.sqlite3",
)This used to be a flat no. The 2025 revival added experimental support for calling an LLM, so it is now possible to route responses through a model instead of pure pattern matching. Treat it as experimental: the feature is young, and if an LLM is central to your product, you are better served by a platform built around one. More on that below.
The honest split is this: ChatterBot is a library you build with in code. Voiceflow is a platform for building, deploying, and observing customer-facing agents that a whole team can maintain. Different jobs.
Three limits tend to push teams off ChatterBot for real deployments:
It matches, it does not reason. ChatterBot returns the closest known response. For a customer service chatbot fielding questions it has never seen, that ceiling shows up fast. Voiceflow is model-agnostic, so you build on OpenAI, Anthropic, or Google models and swap between them without a rewrite when a better or cheaper option ships.
It has no built-in grounding. Answering questions about your actual product means feeding a model your actual content. Voiceflow's Knowledge Base handles that with retrieval-augmented generation, so answers come from your docs instead of from whatever happened to be in the training set. If you have ever compared corpus training to modern RAG, the gap is large.
It gives you no view into production. ChatterBot has no dashboards, no evaluation harness, and no environments. Voiceflow ships Workflows and Playbooks for structuring agent logic, Evaluations for testing changes before they go live, Observability for seeing why an agent did what it did, and separate dev, staging, and production environments. When something breaks at 2am, that visibility is the difference between a fix and a guess.
None of this means you have to write Python at all. If you would rather not, an AI agent builder like Voiceflow lets you design the flow visually, connect a handoff to a human when the agent hits its limit, and ship without managing spaCy versions or storage adapters yourself.
{{blue-cta}}
Yes. After a hiatus from 2020 to 2025, the library was revived and has shipped regular releases since, with the current version on modern Python and spaCy.
Yes. ChatterBot is open source under the BSD license, so it is free to use and modify. Your only costs are the infrastructure you run it on.
For simple, rule-based, or offline bots, it can work. For production agents that need reasoning, grounding in your own data, and monitoring, most teams move to a platform. See our roundup of the best AI chatbots for options.
LangChain is a framework for building LLM applications and pipelines. Rasa is an open-source framework aimed at more advanced intent-based assistants. ChatterBot is the lightest of the three and the easiest to learn. If you want open-source options beyond these, we compare a few in our open-source chatbot guide.
Yes. Install it with pip and import it like any other library. Notebooks are a good place to experiment with training data before you commit to a full build.
Yes. You can export training data and conversations to reuse for other bots or for analysis, which is handy if you later graduate to a different platform.
