# Tag Discovery ++
> [!Important]
> Read [Relative Custom Tags](https://markojs.com/docs/reference/custom-tag#relative-custom-tags) in our docs first
---
**TL;DR:** Tag discovery should dig into non-tag directories beneath `tags/`
---
As it stands, our tag discovery is _shallow_. When there is a `tags/` directory, Marko looks at its top-level files & folders to see if any are valid Marko tags. This means that there isn't any form of grouping.
```
tags/
a.marko
b/
index.marko
c/
c.marko
group/
d.marko
```
In this example, `<a>`, `<b>`, and `<c>` are discoverable as tags but `<d>` is not.
As projects get larger and more custom tags are added, sometimes it leads to bloated `tags/` directories.
```
src/
routes/
+page.marko
blog/
+page.marko
tags/
const-debounce.marko
icon-chevron.marko
icon-hamburger.marko
icon-plus.marko
let-localstorage.marko
testimonials.marko
code-block.marko
comments.marko
```
Our current recommendation here is to move tags closer to where they are used. **This will continue to be our recommendation**, regardless of this proposal.
```
src/
routes/
_home/
+page.marko
tags/
testimonials.marko
blog
+page.marko
tags/
code-block.marko
comments.marko
tags/
const-debounce.marko
icon-chevron.marko
icon-hamburger.marko
icon-plus.marko
let-localstorage.marko
```
Of course, this doesn't fully solve the problem. Some tags, like icons in this case, must be accessible globally!
## Proposal
**Tag discovery should dig into all folders below `tags/` that aren't tags themselves**.
This means that we would be able to make categories, and tags would still be discoverable:
```
tags/
utils/
const-debounce.marko
let-localstorage.marko
icons/
icon-chevron.marko
icon-hamburger.marko
icon-plus.marko
```
## Tradeoffs
This seems great at first, but it does come with some baggage.
First, the tag discovery algorithm will be doing more work than it was before. This _should_ be negligible, especially since the recursive search only starts when a `tags/` directory is present.
Also, some tags that weren't discovered before now _will_ be discovered. We were most worried about test files being picked up, but since the algorithm would _stop_ at directories that were also tags this shouldn't be a problem:
```
tags/
my-button/
examples/
not-discovered.marko
my-button.marko
my-input/
also-not-discovered.marko
index.marko
```
## Thoughts?
Let's start a discussion about this! Reach out on [Discord](https://discord.com/channels/725013179465203793/1423366789735256105) if you have any questions or concerns, or if you like the idea :smile: