NerdTikTok is a high-performance TikTok engagement simulation tool built for authorized security researchers and platform analysts. It simulates organic user interactions at scale, allowing professionals to evaluate TikTok's rate limiting, analytics processing, and engagement detection systems under controlled conditions.
This tool is designed exclusively for use on accounts and content you own or have explicit written permission to test. Unauthorized use violates TikTok's Terms of Service and applicable laws.
- Two engagement vectors: view count manipulation and share count simulation
- Device fingerprint pool of 50,000 pre-generated mobile, tablet, and desktop profiles
- Realistic device rotation across 42 Android models, 12 iOS devices, and 13 laptop configurations
- Multi-region simulation spanning 96 countries and 48 timezones
- Version code randomization across 9 TikTok build versions
- Live terminal-based statistics with real-time throughput monitoring
- Configurable view targets with automatic termination
- Continuous share mode with graceful Ctrl+C interrupt handling
- Connection pooling with 10 client pools for optimal resource distribution
- Custom terminal UI with color-coded status indicators
| # | Mode | Mechanism | Use Case |
|---|---|---|---|
| 1 | View Bot | Sends play_delta statistics to TikTok's analytics endpoint with randomized device fingerprints |
Tests view count processing pipelines and duplicate detection |
| 2 | Share Bot | Sends share_delta statistics continuously with rotating device profiles |
Evaluates share count tracking and engagement rate calculations |
Each simulated request carries a complete device profile:
- Device ID & Install ID: 19-digit randomized identifiers
- Hardware Profiles: Model, brand, screen resolution, DPI from real device specs
- OS Fingerprints: Android 10-14, iOS 14.8-17.0, desktop platforms
- Carrier Data: Region codes, app store channels, WiFi connection type
- Build Versions: 9 TikTok version codes (247-466) with corresponding manifest versions
POST /aweme/v1/aweme/stats
Host: api19.tiktokv.com
X-SS-REQ-TICKET: <unix_millis>
User-Agent: <device_specific_ua>
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
play_delta=1&item_id=<video_id>&version_code=<build>&aweme_type=0
- 10 distinct HTTP client pools with configurable connection limits
- Per-pool transport configuration for MaxIdleConns, MaxIdleConnsPerHost, MaxConnsPerHost
- 5-second request deadline with automatic timeout tracking
- Failed/timeout/error request categorization in live statistics
- Go 1.19+ (compiled binary)
- No external dependencies (uses only standard library packages)
- Works on Windows, Linux, and macOS
- Outbound internet access to
api19.tiktokv.com - ~25MB memory for device pool initialization (50,000 profiles)
# Clone the repository
git clone https://github.com/nerdblud/NerdTikTok.git
cd NerdTikTok
# Build from source
go build -o NerdTikTok
# Run the tool
./NerdTikTok
# Or run directly
go run main.go ┌──────────────────────────────────────────────────────────┐
│ ◈ SELECT AN OPTION │
├──────────────────────────────────────────────────────────┤
│ 1 TikTok Viewer (Layer 7 - View Bot) │
│ 2 TikTok Share (Layer 7 - Share Bot) │
├──────────────────────────────────────────────────────────┤
│ q Quit │
└──────────────────────────────────────────────────────────┘
❯ NerdTikTok > 1
┌──────────────────────────────────────────────────────────┐
│ 🔗 Enter TikTok Video URL or ID │
├──────────────────────────────────────────────────────────┤
│ ❯ https://www.tiktok.com/@user/video/7234567890123456789 │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ 👁 Enter Number of Views to Send │
├──────────────────────────────────────────────────────────┤
│ ❯ 1000 │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ ℹ Target Video ID: 7234567890123456789 │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ ↻ Sending 1000 views to target... │
├──────────────────────────────────────────────────────────┤
│ ⚡ Views: 847/1000 (85%) Rate: 423/s │
└──────────────────────────────────────────────────────────┘
Supports three input formats:
- Full URL:
https://www.tiktok.com/@user/video/7234567890123456789 - Short URL:
https://vm.tiktok.com/abc123/(auto-resolves via redirect) - Raw ID:
7234567890123456789(19-digit numeric string)
Number of successful view registrations to send. The tool automatically stops when this target is reached. Default threads: 3,000 concurrent workers.
Continuous operation until manually stopped with Ctrl+C. No target limit. Uses the same 3,000 thread pool.
Samsung Galaxy (Z Fold, S21-S23, A53-A54), Google Pixel (6-8, 7a, 8 Pro), Xiaomi (Redmi Note 11-13, POCO F5-F6, POCO X5), OnePlus (9-12), OPPO (Find X5-X6, Reno 8), vivo (X80-X90, Y78), Honor (70, 90, Magic5), Nothing Phone (1-2), Realme (GT 2, 11), Motorola (Edge 40, Razr 40), Sony (Xperia 1 V, 5 V), Nokia (X30, G60)
iPhone 14 series (5 variants), iPhone 14 Plus/Pro Max, iPad Pro (4 variants), iPad Air
MacBook Pro 14"/16" (M1 Pro/Max), MacBook Air M1, Dell XPS 15/13, Lenovo ThinkPad X1 Carbon Gen 9/10, Surface Laptop 5, Surface Pro 9, HP Spectre x360, ASUS ZenBook
Covers North America (3), South America (10), Europe (17), Asia (18), Middle East (4), Africa (12), Oceania (11), Central Asia/Caucasus (10), and Pacific Islands (11)
Distributed across all major UTC offsets from Pacific/Honolulu (UTC-10) to Pacific/Auckland (UTC+12)
| Metric | Value |
|---|---|
| Device Pool Size | 50,000 pre-generated profiles |
| Max Concurrent Threads | 5,000 (configurable via constant) |
| Request Timeout | 5 seconds |
| Stats Refresh Rate | 250ms |
| Client Pools | 10 with dynamic connection limits |
| Memory Footprint | ~25MB (device pool) + runtime overhead |
| CPU Usage | Scales linearly with thread count |
The tool maintains four atomic counters per session:
- Success (s): HTTP 200 responses with valid Content-Type
- Failure (f): HTTP non-200 responses or invalid Content-Type
- Timeout (t): Request deadline exceeded
- Error (e): Connection failures, DNS errors, protocol errors
Live display shows running rate (requests/second) calculated from elapsed time.
| Scenario | Recommended Mode | Notes |
|---|---|---|
| View count integrity | View Bot with 1,000-10,000 target | Tests duplicate detection and bot filtering |
| Analytics processing | View Bot with staggered targets | Evaluate real-time vs. batch processing delays |
| Rate limiting thresholds | Share Bot continuous mode | Identify connection/IP-based rate limits |
| Regional distribution | Manual region rotation | Test geo-specific analytics accuracy |
- Test only on accounts and content you own
- Start with low targets (100-500) to verify tool behavior
- Monitor your testing machine's network utilization
- Use in isolated testing environments when possible
- Document all testing activities and maintain authorization records
- Stop immediately if you receive any platform warnings
- Requests target a single API endpoint; does not simulate full user session behavior
- No proxy support in current build (proxy parameter exists but not exposed in CLI)
- Device pool uses uniform random distribution, not weighted by real-world market share
- Does not implement TikTok's newer API authentication mechanisms
- Success metrics are based on HTTP status only, not actual view registration confirmation
- Network throughput limited by single-machine bandwidth and file descriptor limits
- Go runtime's garbage collection may cause periodic latency spikes under extreme load
Short TikTok links (vm.tiktok.com, vt.tiktok.com) are resolved via HTTP GET with redirect following (max 5 redirects). The video ID is extracted from the final URL using regex pattern matching for /video/ paths or v= query parameters.
All shared state uses sync/atomic operations:
- Device pool index rotation
- Client pool round-robin selection
- Statistics counters
Custom ANSI escape code implementation with 256-color support. Color palette uses yellow/gold tones (220, 214, 228) for branding. Includes stripANSI() helper for accurate text width calculation in box-drawing routines.
# Standard build
go build -ldflags="-s -w" -o NerdTikTok
# Cross-compile for Windows
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o NerdTikTok.exe
# Cross-compile for macOS (Intel)
GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o NerdTikTok-mac
# Cross-compile for macOS (Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o NerdTikTok-m1
# Cross-compile for Linux ARM (Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o NerdTikTok-armThe -ldflags="-s -w" flags strip debug information and symbol tables, reducing binary size by ~30%.
This tool is provided for authorized security assessment and educational purposes only. Users must:
- Obtain explicit written permission before testing any TikTok content or account
- Comply with TikTok's Terms of Service and all applicable laws and regulations
- Accept full responsibility for their use of this software
- Understand that automated interactions violate TikTok's Community Guidelines
- Acknowledge that misuse may result in account suspension, legal action, or both
The authors assume no liability for misuse, damages, or legal consequences arising from the use of this tool. This software is not affiliated with, endorsed by, or connected to TikTok or ByteDance in any way.
This tool demonstrates API interaction patterns for educational understanding of client-server architecture. It is not intended to circumvent any security measures, artificially inflate engagement metrics, or interfere with TikTok's services. Use responsibly and ethically.
Remember: With great power comes great responsibility. Stay ethical, stay legendary.
