# Unduckified

> 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.
## Quick Start
Add this URL as a custom search engine to your browser to use DuckDuckGo's bangs, but faster:
```
https://s.dunkirk.sh?q=%s
```
## How is it that much faster?
DuckDuckGo does their redirects server side. Their DNS is...not always great. Result is that it often takes ages.
I 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.
## How is this different from Theo's version again?
This is primarily my personal fork to experiment with PWAs but I do have a few ideas that I would love to add to this.
- [x] Bangs
- [x] Dark Mode
- [x] Settings (for things like disabling search history and changing default bang)
- [x] Search counter
- [x] [OpenSearch](https://developer.mozilla.org/en-US/docs/Web/XML/Guides/OpenSearch) support
- [x] Search History (clearable, all local, and disabled by default ofc)
- [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)
- [x] Cute little text animations
- [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)
- [x] Hashmapped bangs for faster searching
- [x] local font file to avoid google fonts
- [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)
- [x] Suffix bangs (e.g. `ghr! taciturnaxolotl/unduckified` will take you to this github repo)
- [x] Quick settings (e.g. `!settings` or `!` will take you to the settings page)
- [x] Custom local bangs! (thanks to [@ayoubabedrabbo@mastodon.social](https://mastodon.social/@ayoubabedrabbo/114114311682366314) for the suggestion)
- [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.
I would love to add these but they don't seem possible / feasible at the moment:
- [ ] ~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)
- [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)
## Fancy smancy technical graphs 😮
The total size of the app is `717.4 KB` (one time download)
### Resource Breakdown
```mermaid
graph TD
subgraph Resources by Size
A[index-B8HLUc3J.js
contains all the ddg bangs
482.5 KB]
B[Font File
25.1 KB]
subgraph Audio Files
C[Audio Files
198.5 KB Total]
end
subgraph Small Assets
D[SVGs & CSS
~11 KB]
end
end
```
### Network Performance
```mermaid
gantt
title Network Waterfall Chart
dateFormat HH:mm:ss.SSS
axisFormat %L
section Initial HTML
GET / (2.8 KB) :done, h1, 10:07:29.038, 208ms
section JavaScript
beacon.min.js :done, b1, 10:07:29.279, 0ms
index-B8HLUc3J.js (482.5 KB) :done, j1, 10:07:29.286, 32ms
registerSW.js (2.2 KB) :done, j2, 10:07:29.287, 60ms
beacon.min.js (2nd) :done, b2, 10:07:29.383, 0ms
section Styles
Main CSS (3.8 KB) :done, c2, 10:07:29.287, 60ms
Font File (25.1 KB) :done, f1, 10:07:29.379, 46ms
section Assets
gear.svg (2.5 KB) :done, s1, 10:07:29.494, 58ms
clipboard.svg (2.4 KB) :done, s2, 10:07:29.495, 63ms
search.svg (2.4 KB) :done, s3, 10:07:29.589, 32ms
section Audio
heavier-tick-sprite.mp3 (22.4 KB) :done, a1, 10:07:29.495, 33ms
toggle-off.mp3 (34.3 KB) :done, a2, 10:07:29.495, 32ms
toggle-on.mp3 (34.3 KB) :done, a3, 10:07:29.496, 46ms
click.mp3 (34.3 KB) :done, a4, 10:07:29.497, 35ms
double.mp3 (34.3 KB) :done, a5, 10:07:29.498, 44ms
foot-switch.mp3 (34.3 KB):done, a6, 10:07:29.498, 38ms
```
## Screenshots
Spoiler Alert: There is both a light and a dark mode 🤯
### Light Mode



### Dark Mode 💪



© 2025-present Kieran Klukas forked from t3dotgg/unduck