# ReaderFactory builds a fresh reader on every call

> In Agno, ReaderFactory.create_reader() returns a new reader built from the options you pass, so chunk_size and other overrides apply and one Knowledge base can no longer change the reader another one gets.

- Published: 2026-10-27
- Author: Md. Fazlul Karim
- Categories: Changelog
- Canonical: https://www.agno.com/blog/readerfactory-builds-a-fresh-reader-on-every-call
- Markdown: https://www.agno.com/blog/readerfactory-builds-a-fresh-reader-on-every-call.md

Agno's `ReaderFactory.create_reader()` now constructs a new reader on every call and hands it the keyword arguments you pass. Earlier releases kept one cached reader per type, so the first call's options won for the rest of the process.

`Knowledge` picks readers by file extension through this factory, which meant two knowledge bases in one process shared the same reader object. Changing `chunk_size` on one quietly changed it for the other.

```python
from agno.knowledge.reader.reader_factory import ReaderFactory

a = ReaderFactory.create_reader("text", chunk_size=200)
b = ReaderFactory.create_reader("text", chunk_size=1000)
print(a.chunk_size, b.chunk_size, a is b)

c = ReaderFactory.create_reader("text")
c.chunk_size = 50
print(ReaderFactory.create_reader("text").chunk_size)
```

Real output, earlier release and this release:

```text
# Before
200 200 True
50

# Now
200 1000 False
5000
```

`ReaderFactory.clear_cache()` is now a no-op kept for backward compatibility.

Learn more about [reader auto-selection](https://docs.agno.com/knowledge/concepts/readers/overview#auto-selection) in the documentation.
