An open API service indexing awesome lists of open source software.

https://github.com/ytax/snapchat-username-checker

A Go-based Snapchat username checker using the app's private gRPC API โ€” proxy support + blazing fast.
https://github.com/ytax/snapchat-username-checker

golang grpc snapchat snapchat-checker snapchat-username snapchat-username-checker ssl-pinning ssl-pinning-bypass username username-checker

Last synced: 6 days ago
JSON representation

A Go-based Snapchat username checker using the app's private gRPC API โ€” proxy support + blazing fast.

Awesome Lists containing this project

README

          

# ๐Ÿ‘ป Snapchat Username Checker

A terminal-based Snapchat username availability checker with SOCKS5 proxy support, session saving, a proxyless mode and real-time CPM tracking.
It leverages Snapchat's private gRPC API (acquired from the mobile app) to deliver fast, accurate results โ€” **proxyless or proxied**.

It's a bit ugly but incredibly fast and efficient โ€” V2 rewrite coming soonโ„ข.

> Written in Go. Reverse engineered straight from the Snapchat mobile app.

**Created by [ytax](https://github.com/ytax)**

---

## โš™๏ธ Features

- ๐Ÿ” **Fastest** Snapchat checker you'll find (gRPC based)
- โšก Average of **260 checks per minute** โ€” tested over a continuous 4-hour run
- ๐Ÿ”Œ Proxyless execution support
- ๐Ÿง  Built-in username filtering for invalid formats
- ๐ŸŒ SOCKS5 Proxy support (recommended for ratelimit bypass)
- ๐Ÿ’พ Auto session saving โ€” resume your checks anytime
- ๐Ÿ“ˆ CPM (Checks Per Minute) calculation
- ๐Ÿ” **Smart proxy switching** โ€” proxyless > proxied > proxyless for speed
- ๐Ÿ“„ Thoroughly documented and commented code. Feel free to use this endpoint or fork this repo!

---

## ๐Ÿš€ Usage

You can download the latest release of the Snapchat Username Checker from the [releases page](https://github.com/yTax/snapchat-username-checker/releases) on GitHub. Simply go to the page, choose the latest version, and download the zip.

After opening you'll be prompted with:

- New Session or Resume Session
- Use proxies or go proxyless after choosing whether to start a new session or resume an existing one
- Select your target usernames file (via GUI dialog)
- (If using proxies) select your proxy list (SOCKS5 only and make sure they are fast)
- If you want to validate your proxies (you should always do this)

### โœ๏ธ File formats

#### `targets.txt` (input)
```
username1
username2
...
```

#### `sessions/SESSION_X/targets.txt` (Saved Sessions)

```
Progress: 2
username1
username2
...
```

> `Progress` line helps resume exactly where you left off.

#### `proxies.txt` (optional, SOCKS5 only due to Snapchat's API only working with gRPC and HTTP2)
```
127.0.0.1:1080
88.198.24.108:1080
...
```

---

## ๐Ÿ“ฆ Build Instruction

> Requires **Go 1.20+** and `protoc` to regenerate gRPC modules (optional).

### 1. Clone the repo

```bash
git clone https://github.com/ytax/snapchat-username-checker.git
cd snapchat-username-checker
```

### 2. Install dependencies

```bash
go mod tidy
```

### 3. Compile

```bash
go build
```

### 4.1 (Optional) Compile your own proto file
```bash
# installs the go modules for protoc and protobuf in case you dont have them
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
```

### 4.2 (Optional) Build your Go module with the proto file
```bash
# this command will create modules/requestparser/suggest_username.pb.go
protoc suggest_username.proto --go_out=.
```

---

## ๐Ÿง  How it works and How it was built

This tool was built by reverse-engineering Snapchat's mobile API. After bypassing the appโ€™s SSL pinning, traffic was intercepted via a debug proxy, allowing access to all the internal gRPC endpoints.

Alongside the endpoint discovery, the tool includes a fairly precise recreation of Snapchatโ€™s .proto files โ€” ensuring that request and response structures are fully compatible with Snapchat's gRPC backend. This makes every check accurate and native, just like the app itself.

It specifically uses: `https://aws.api.snapchat.com/snapchat.activation.api.SuggestUsernameService/SuggestUsername`

This is the same endpoint the Snapchat app uses to suggest alternative usernames during signup. The logic is simple and reliable:

> If the **first suggestion returned matches the username you entered**, the username is **available**.

### โœ… Why This Matters

- **No headless browsers**
- **No terrible web endpoints that yield inaccurate results**
- **Incredibly fast and efficient**

Just raw, direct gRPC requests to Snapchatโ€™s infrastructure โ€” resulting in **fast**, **accurate**, and **efficient** username checks.

---

## โš ๏ธ Warnings

- **Your proxies MUST be SOCKS5**, in `IP:PORT` format. No `socks5://` prefix. This is due to SOCKS5 being the only proxies that can communicate in HTTP2 with gRPC.
- **Slow proxies is a TERRIBLE bad idea.** Proxyless is faster than proxied with slow proxies, some free proxies like the ones from [proxifly's github](https://github.com/proxifly/free-proxy-list) **may** work but i'd recommend you use the free trial proxies from [Webshare](https://www.webshare.io/) if you want to run this for free, they're fast enough to not cause any problems or major slow-downs.
- **Rate-limits are automatically handled** by switching to proxies for a short cooldown.
- **Yes, the code is messy.** It's functional, but a rewrite is planned for V2.

---

## ๐Ÿ›  Proto & gRPC

Again, if you want to regen your own gRPC or Go module:

```bash
protoc suggest_username.proto --go_out=. --go-grpc_out=.
```

Output module will be in `./modules/requestparser`.

---

## โ“ FAQ

**Q: Why is this checker so fast and what makes it different?**
A: It talks directly to Snapchat's internal gRPC endpoint used by the mobile app. This results in faster responses and less overall ratelimits.

**Q: Can I use HTTP proxies?**
A: No. Only SOCKS5. HTTP proxies won't work with HTTP/2 & gRPC.

**Q: Itโ€™s not checking properly, whatโ€™s wrong?**
A: Check your proxies. Or just run proxyless. Most issues come from slow/dead proxies.

**Q: Can i use free proxies?**
A: They most likely wont work because of how slow they are and possibly not handling encrypted connections. If you want to run this tool for free sign up for the [Webshare](https://www.webshare.io/) free trial and claim the 10 free proxies they give you. The proxies arent incredible, but they're fast enough to not cause problems or slow-down the tool.

**Q: I'm using proxies, but it looks like some checks are still proxyless. Why?**
A: This is intentional. Proxyless requests are significantly faster because they avoid the overhead of routing through a proxy.

When you allow the tool to use proxies, the checker starts by sending requests **without a proxy** to maximize speed. When it hits a rate limit, it automatically switches to **proxy mode**, using your SOCKS5 proxies to continue checking. Once the rate limit on the proxyless connection expires, it switches back to proxyless mode to take advantage of it's speed.

If a proxy is rate-limited or fails, the tool rotates to the next one in your list.

This smart switching system ensures the checks are as fast as possible, that it works great even with average-speed proxies and an efficient use of your proxies and their bandwidth.

---

## ๐Ÿ” What Makes a Valid Username?

Snapchat requires usernames that:
- Are 3โ€“15 characters long
- Start with a letter
- Contain only letters, numbers, dots, dashes or underscores
- Do **not** end with a symbol
- Do **not** contain multiple symbols in a row

> This tool filters invalid usernames before even sending a request โ€” saving time, proxies and ratelimits.

---

## ๐Ÿ‘พ Support

Open an issue on [GitHub](https://github.com/ytax/snapchat-username-checker/issues).

---

## ๐Ÿงช Known Issues / Limitations

- Sometimes snapchat's own API will have outdated results when it comes to checking. This can sometimes cause the checker to give false-positives especially with accounts that were shadowbanned.
- Some SOCKS5 proxies may not support HTTP/2 and will be skipped.
- Running large lists with poor proxies may significantly slow down checks.
- Concurrency isn't implemented yet.
- The proxy validator is **abysmally** slow, concurrency needs to be implemented here asap.
- The program sometimes will enter an infinite loop or really long loop if all of your proxies suddenly die.
- The checking speed drops by quite a bit and the ratelimits increase after a large amount of requests that return taken usernames. A possible fix for this would be to send a request for an avaliable username in order to prevent the API from ratelimitting the user.

---

## ๐Ÿงฑ Developer Notes

- The `suggest_username.proto` file was reverse engineered from the mobile app and defines the full request/response schema for the SuggestUsername gRPC call.
- You can replace this proto file with others if you reverse additional endpoints.
- The tool currently sends an empty locale (`""`) in gRPC requests. This matches Snapchatโ€™s current default behavior but this could be a problem in the future.

---

## ๐Ÿ”ฎ Roadmap (V2 Preview)

- [ ] Cleaner, modular codebase
- [ ] Parallel checking with goroutines or some other form of concurrency
- [ ] Optional web GUI
- [ ] Cleaner UI and better user experience

---

## ๐Ÿค Contributing

Pull requests are welcome! Feel free to fork the project and submit improvements, bug fixes, or feature ideas.

---

## โš–๏ธ Disclaimer

This tool is intended for research purposes only.
Use responsibly.

---

## ๐Ÿ–ผ๏ธ Screenshots

![image](https://github.com/user-attachments/assets/c14bd816-e059-425b-9f8e-a25f054e1776)