A fast, local-first "redirection engine" for !bang users with a few extra features ^-^
1# Unduckified
2
3
4
5> This is a fork of [t3dotgg/unduck](https://github.com/t3dotgg/unduck). Check out Theo's hosted version at [unduck.link](https://unduck.link) for the original experience.
6
7## Quick Start
8
9Add this URL as a custom search engine to your browser to use DuckDuckGo's bangs, but faster:
10
11```
12https://s.dunkirk.sh?q=%s
13```
14
15## How is it that much faster?
16
17DuckDuckGo does their redirects server side. Their DNS is...not always great. Result is that it often takes ages.
18
19I solved this by doing all of the work client side. Once you've went to https://s.dunkirk.sh once, the JS is all cached and will never need to be downloaded again. Your device does the redirects, not me or any other server.
20
21## How is this different from Theo's version again?
22
23This is primarily my personal fork to experiment with PWAs but I do have a few ideas that I would love to add to this.
24
25<img align="right" width="140" height="140" src="https://raw.githubusercontent.com/taciturnaxolotl/unduckified/main/public/goose.gif" alt="goose walking animation"/>
26
27- [x] Bangs
28- [x] Dark Mode
29- [x] Settings (for things like disabling search history and changing default bang)
30- [x] Search counter
31- [x] [OpenSearch](https://developer.mozilla.org/en-US/docs/Web/XML/Guides/OpenSearch) support
32- [x] Search History (clearable, all local, and disabled by default ofc)
33- [x] Fancy sounds (disabled if you have `prefers-reduced-motion` set; sounds only account for `198.5 KB` of the `717.4 KB` total size)
34- [x] Cute little text animations
35- [x] Auto updating bangs file! (I'm using a [GitHub Action](https://github.com/taciturnaxolotl/unduckified/actions/workflows/update-bangs.yaml) to update the bangs file every 24 hours)
36- [x] Hashmapped bangs for faster searching
37- [x] local font file to avoid google fonts
38- [x] redirects to the base page of a bang if there is no query (e.g. `!g` will take you to google.com and `!yt` will take you to youtube.com)
39- [x] Suffix bangs (e.g. `ghr! taciturnaxolotl/unduckified` will take you to this github repo)
40- [x] Quick settings (e.g. `!settings` or `!` will take you to the settings page)
41- [x] Custom local bangs! (thanks to [@ayoubabedrabbo@mastodon.social](https://mastodon.social/@ayoubabedrabbo/114114311682366314) for the suggestion)
42- [x] Kagi bangs! We are able to grab the bangs from [kagisearch/bangs](https://github.com/kagisearch/bangs/) and Kagi is far more responsive than DuckDuckGo when it comes to updating their bangs.
43
44I would love to add these but they don't seem possible / feasible at the moment:
45
46- [ ] ~Search suggestions~ (as far as I can tell this essentially impossible to do natively with either firefox or chrome; please correct me if I'm wrong though. In this case I would very much love to be wrong)
47- [x] ~Weekly bang checks to ensure that all bangs still work and excludes those that don't~ this ended up being unreliable because of cloudflare rate limiting and switching to kagi bangs helped a lot with this
48
49## Screenshots
50
51<details>
52 <summary>Spoiler Alert: There is both a light and a dark mode 🤯 (shocking i know)</summary>
53
54### Light Mode
55
56
57
58
59
60### Dark Mode (the superior mode)
61
62
63
64
65
66</details>
67
68<p align="center">
69 <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/main/.github/images/line-break.svg" />
70</p>
71
72<p align="center">
73 <i><code>© 2025-present <a href="https://github.com/taciturnaxolotl">Kieran Klukas</a> forked from <a href="https://github.com/t3dotgg/unduck">t3dotgg/unduck</a></code></i>
74</p>
75
76<p align="center">
77 <a href="https://github.com/taciturnaxolotl/unduckified/blob/main/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
78</p>