(01) Pengunduh TikTok · Instagram segera hadir

Tempel link, unduh.

Video TikTok tanpa watermark, lengkap dengan audio dan slideshow foto. Tanpa akun, tanpa aplikasi tambahan.

Menunggu URL…
TikTok aktif · Instagram segera hadir

Tiga langkah

(03)

Salin link

Di TikTok, buka videonya, tekan Bagikan, lalu Salin Tautan.

Tempel dan unduh

Tempel ke kolom di atas atau tekan Tempel, lalu tekan Unduh.

Pilih format

Pilih MP4 HD, MP4 SD, MP3, atau foto slide, lalu tekan Tautan langsung untuk menyimpan.

Yang didukung

(04)

TikTok

Video tanpa watermark dalam HD dan SD, versi dengan watermark, audio, cover, dan slideshow foto.

MP4MP3JPG

Instagram

Segera hadir. Reels dan postingan dari akun publik sedang disiapkan.

Segera hadir

Riwayat

Pertanyaan

(05)

DMCA & Privasi

DMCA

SNAPP.UI tidak menyimpan atau menghosting video, foto, maupun audio. Semua file tetap berada di server platform asalnya dan hak ciptanya milik pemegang aslinya.

Pemegang hak cipta yang ingin mengajukan permintaan penghapusan (takedown) dapat menghubungi kami lewat WhatsApp dengan menyertakan tautan konten, bukti kepemilikan, dan kontak Anda. Kami akan menanggapi secepatnya.

Privasi: tanpa akun dan tanpa pelacak. Riwayat unduhan hanya tersimpan di browser perangkatmu dan bisa dihapus kapan saja. Gunakan layanan ini hanya untuk konten milikmu atau yang kamu punya izinnya.

Untuk pengembang: contoh backend

Halaman ini butuh server yang membaca halaman publik TikTok (Instagram menyusul), lalu mengambil tautan file MP4 dari CDN mereka. Pilih contoh yang sesuai.

server-express.js
const express = require('express');
const axios = require('axios');
const cors = require('cors');

const app = express();
app.use(cors());
app.use(express.json());

// Endpoint Downloader TikTok & Instagram
app.post('/api/download', async (req, res) => {
    const { url } = req.body;

    if (!url || (!url.includes('tiktok.com') && !url.includes('instagram.com'))) {
        return res.status(400).json({ success: false, message: 'URL tidak valid' });
    }

    try {
        // Menggunakan API Scraper TikWM untuk TikTok
        const response = await axios.post('https://www.tikwm.com/api/', new URLSearchParams({
            url: url,
            hd: 1
        }), {
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
        });

        const data = response.data.data;
        if (!data) {
            return res.status(404).json({ success: false, message: 'Gagal mengekstrak media' });
        }

        // Return JSON Terstruktur ke Frontend
        res.json({
            success: true,
            platform: 'TikTok',
            id: data.id,
            title: data.title,
            author: `@${data.author.unique_id}`,
            authorName: data.author.nickname,
            avatar: data.author.avatar,
            cover: data.cover,
            videoNoWatermark: data.play, // Direct CDN MP4 tanpa watermark
            videoWatermark: data.wmplay,
            audio: data.music,
            stats: { likes: data.digg_count, views: data.play_count, shares: data.share_count }
        });

    } catch (error) {
        console.error('Extraction Error:', error.message);
        res.status(500).json({ success: false, message: 'Server scraping error' });
    }
});

// Endpoint Instagram (postingan publik, via halaman embed)
app.get('/api/instagram', async (req, res) => {
    const m = (req.query.url || '').match(/(?:p|reel|reels|tv)\/([A-Za-z0-9_-]+)/);
    if (!m) return res.status(400).json({ success: false, message: 'Link Instagram tidak valid' });

    const unesc = (t) => t.replace(/\\u0026/g, '&').replace(/\\\//g, '/');
    try {
        const { data: html } = await axios.get(`https://www.instagram.com/p/${m[1]}/embed/captioned/`, {
            headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36' }
        });
        const video = html.match(/video_url\\?":\\?"([^"\\]+)/);
        const img = html.match(/class="EmbeddedMediaImage"[^\x3E]*src="([^"]+)"/);
        const user = html.match(/class="UsernameText"[^\x3E]*>([^\x3C]+)/);
        const mediaUrl = video ? unesc(video[1]) : (img ? img[1].replace(/&/g, '&') : null);
        if (!mediaUrl) return res.status(404).json({ success: false, message: 'Media tidak ditemukan / akun privat' });

        res.json({
            success: true, id: m[1],
            author: user ? '@' + user[1].trim() : '@instagram',
            thumbnail: img ? img[1].replace(/&/g, '&') : null,
            items: [{ url: mediaUrl, type: video ? 'video' : 'image' }]
        });
    } catch (e) {
        res.status(500).json({ success: false, message: 'Server scraping error' });
    }
});

app.listen(5000, () => console.log('⚡ Server Downloader aktif di port 5000!'));