▶ Run preview

Video editor

Simple edit video

Built by@NDtechBronze
GAM Game AI-generated Checked ▶ Preview
Published 18 Sep 2026 · Created 18 Sep 2026
video-editor-1 — Preview● Secure sandbox
PROOF CARD
Video editor
@NDtech · AI-generated · Chatgpt · 9/10 checks
AI got this wrong. It didn't understand if it gonna be in veu,react or html&css
  • ✓ README
  • ✓ Files or snippet
  • ✓ Security scan ran
  • ✓ Checked — virus/secrets clean
  • ✓ AI tool named
  • ✓ AI workflow note
  • — Human contribution stated
  • ✓ Original (no parent)
  • ✓ Live preview
  • ✓ Published in public record
CAPABILITIES DEMONSTRATED

Based on this build, not self-reported. Select a skill to find matching builders.

Share to WhatsApp
SHIP READINESS — PRECISE CHECKS
  • ✓ Scan completed
  • — No test files detected
  • ✓ No known-vulnerable dependencies listed
  • ✓ No secret-shaped hits in the scan report
  • — Maintenance history: 0 stored versions, 1 platform event

These are precise checks on this object. BlaqVibes does not guarantee this app is secure.

PROJECT EVIDENCE
Creator identityAvailable — @NDtech
Project filesAvailable — snippet inline
READMEAvailable
Live previewAvailable — runs sandboxed
Security scanChecked — virus clean, no secrets
Project historyAvailable — 1 event
ReviewsNot available — none yet
StarsNot available — no stars yet
Remix lineageAvailable — original project
Build methodAvailable — AI-generated · Chatgpt
BUILD METHOD
AI-generated — Substantially produced from an AI workflow using Chatgpt. · Tool: Chatgpt
AI-generated — AI is a tool here, not the author. Provenance is transparent.
PROJECT HISTORY — WHAT CHANGED
Sep 18 First version published
COMMUNITY — COMMENTS · 0
Please sign in to comment.
No comments yet. Leave the first.
COMMUNITY — REVIEWS · 0
Please sign in to review. Trade or star first.
No witnesses yet.
NEXT ACTIONS
Start with the idea, change it, and publish your version.
Comment
README — REQUIRED FOR EVERY PROJECT

🎬 Video Editor — Static App

A lightweight, browser-based video editor built with pure HTML, CSS, and JavaScript. No frameworks, no installs, no terminal needed!


📁 Folder Structure

video-editor/ ├── index.html ├── style.css └── app.js


🚀 How to Run

  1. Download or clone the project
  2. Open the folder
  3. Double-click index.html
  4. It opens directly in your browser ✅

No installation required!


✨ Features

Feature Status
📁 Upload Video ✅
▶️ Play / Pause ✅
⏮ Restart ✅
🔇 Mute / Unmute ✅
🔊 Volume Control ✅
⚡ Playback Speed ✅
🎨 7 Video Filters ✅
⏱️ Seekable Timeline ✅
📸 Screenshot & Save ✅
⬇️ Export / Download ✅

🎨 Available Filters

  • None
  • Grayscale
  • Sepia
  • Brightness
  • Contrast
  • Blur
  • Invert

🛠️ Built With

  • HTML5
  • CSS3
  • Vanilla JavaScript
  • Canvas API (for screenshots)

📌 Notes

  • No backend required
  • Works fully offline
  • Compatible with all modern browsers (Chrome, Firefox, Edge, Safari)

📄 License

MIT License — Free to use and modify.

FILE TREE
No file tree — this is a snippet. See Code tab.
Click any file to preview (200KB max). Full ZIP has everything.
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Video Editor</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>

    <!-- HEADER -->
    <header class="app-header">
      <h1>🎬 Video Editor</h1>
      <label class="upload-btn">
        Upload Video
        <input type="file" id="fileInput" accept="video/*" hidden />
      </label>
    </header>

    <!-- MAIN LAYOUT -->
    <div class="editor-layout">

      <!-- SIDEBAR -->
      <aside class="sidebar">
        <h3>🎨 Filters</h3>
        <div class="filter-list">
          <button class="filter-btn active" data-filter="none">None</button>
          <button class="filter-btn" data-filter="grayscale(100%)">Grayscale</button>
          <button class="filter-btn" data-filter="sepia(100%)">Sepia</button>
          <button class="filter-btn" data-filter="brightness(150%)">Brightness</button>
          <button class="filter-btn" data-filter="contrast(200%)">Contrast</button>
          <button class="filter-btn" data-filter="blur(2px)">Blur</button>
          <button class="filter-btn" data-filter="invert(100%)">Invert</button>
        </div>

        <h3>🔊 Volume</h3>
        <input type="range" id="volumeSlider" min="0" max="1" step="0.01" value="1" class="volume-slider" />
        <p class="volume-label" id="volumeLabel">100%</p>

        <h3>⚡ Speed</h3>
        <div class="speed-buttons">
          <button class="speed-btn" data-speed="0.5">0.5x</button>
          <button class="speed-btn active" data-speed="1">1x</button>
          <button class="speed-btn" data-speed="1.5">1.5x</button>
          <button class="speed-btn" data-speed="2">2x</button>
        </div>
      </aside>

      <!-- MAIN AREA -->
      <main class="main-area">

        <!-- VIDEO PLAYER -->
        <div class="video-player">
          <video id="video" class="video-element" style="display:none;"></video>
          <div class="video-placeholder" id="placeholder">
            <span>🎬</span>
            <p>Upload a video to get started</p>
          </div>
        </div>

        <!-- TOOLBAR -->
        <div class="toolbar">
          <button class="tool-btn" id="restartBtn" disabled>⏮ Restart</button>
          <button class="tool-btn play-btn" id="playBtn" disabled>▶ Play</button>
          <button class="tool-btn" id="muteBtn" disabled>🔇 Mute</button>
          <button class="tool-btn" id="screenshotBtn" disabled>📸 Screenshot</button>
          <button class="tool-btn export-btn" id="exportBtn" disabled>⬇️ Export</button>
        </div>

        <!-- TIMELINE -->
        <div class="timeline-wrapper">
          <span class="time-label" id="currentTimeLabel">0:00</span>
          <div class="timeline-bar" id="timelineBar">
            <div class="timeline-progress" id="timelineProgress">
              <div class="timeline-thumb"></div>
            </div>
          </div>
          <span class="time-label" id="durationLabel">0:00</span>
        </div>

      </main>
    </div>

    <!-- SCREENSHOT PREVIEW -->
    <canvas id="screenshotCanvas" style="display:none;"></canvas>

    <script src="app.js"></script>
  </body>
</html>
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background: #0f0f0f;
  color: #fff;
  font-family: 'Segoe UI', sans-serif;
  min-height: 100vh;
}

/* HEADER */
.app-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 28px;
  background: #1a1a2e;
  border-bottom: 2px solid #e94560;
}

.app-header h1 {
  font-size: 1.5rem;
  color: #e94560;
}

.upload-btn {
  background: #e94560;
  color: #fff;
  padding: 10px 20px;
  border-radius: 8px;
  cursor: pointer;
  font-weight: bold;
  transition: background 0.2s;
}

.upload-btn:hover {
  background: #c73652;
}

/* LAYOUT */
.editor-layout {
  display: flex;
  min-height: calc(100vh - 60px);
}

/* SIDEBAR */
.sidebar {
  width: 200px;
  background: #16213e;
  padding: 20px 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  border-right: 1px solid #2a2a4a;
}

.sidebar h3 {
  font-size: 0.85rem;
  color: #aaa;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 4px;
}

.filter-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.filter-btn {
  background: #1e2a45;
  color: #ccc;
  border: 1px solid #2a3a5e;
  border-radius: 6px;
  padding: 7px 10px;
  cursor: pointer;
  text-align: left;
  font-size: 0.85rem;
  transition: all 0.2s;
}

.filter-btn:hover {
  background: #2a3a5e;
  color: #fff;
}

.filter-btn.active {
  background: #e94560;
  border-color: #e94560;
  color: #fff;
}

.volume-slider {
  width: 100%;
  accent-color: #e94560;
}

.volume-label {
  font-size: 0.8rem;
  color: #aaa;
  text-align: center;
}

.speed-buttons {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.speed-btn {
  background: #1e2a45;
  color: #ccc;
  border: 1px solid #2a3a5e;
  border-radius: 6px;
  padding: 5px 10px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s;
}

.speed-btn:hover,
.speed-btn.active {
  background: #e94560;
  color: #fff;
  border-color: #e94560;
}

/* MAIN AREA */
.main-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 20px;
  gap: 16px;
}

/* VIDEO PLAYER */
.video-player {
  flex: 1;
  background: #000;
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 380px;
  border: 2px solid #1e2a45;
}

.video-element {
  width: 100%;
  max-height: 420px;
  object-fit: contain;
}

.video-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  color: #555;
}

.video-placeholder span {
  font-size: 4rem;
}

.video-placeholder p {
  font-size: 1rem;
}

/* TOOLBAR */
.toolbar {
  display: flex;
  gap: 10px;
  justify-content: center;
  flex-wrap: wrap;
}

.tool-btn {
  background: #1e2a45;
  color: #ccc;
  border: 1px solid #2a3a5e;
  border-radius: 8px;
  padding: 10px 18px;
  cursor: pointer;
  font-size: 0.9rem;
  transition: all 0.2s;
}

.tool-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.tool-btn:not(:disabled):hover {
  background: #2a3a5e;
  color: #fff;
}

.play-btn {
  background: #e94560;
  border-color: #e94560;
  color: #fff;
  font-weight: bold;
  padding: 10px 30px;
}

.play-btn:not(:disabled):hover {
  background: #c73652 !important;
}

.export-btn {
  background: #27ae60;
  border-color: #27ae60;
  color: #fff;
}

.export-btn:not(:disabled):hover {
  background: #1e8449 !important;
}

/* TIMELINE */
.timeline-wrapper {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 4px;
}

.time-label {
  font-size: 0.8rem;
  color: #aaa;
  min-width: 40px;
  text-align: center;
}

.timeline-bar {
  flex: 1;
  height: 8px;
  background: #2a2a4a;
  border-radius: 10px;
  cursor: pointer;
  position: relative;
}

.timeline-progress {
  height: 100%;
  background: #e94560;
  border-radius: 10px;
  position: relative;
  width: 0%;
  transition: width 0.1s linear;
}

.timeline-thumb {
  width: 16px;
  height: 16px;
  background: #fff;
  border-radius: 50%;
  position: absolute;
  right: -8px;
  top: 50%;
  transform: translateY(-50%);
  box-shadow: 0 0 6px rgba(233, 69, 96, 0.8);
}
Ask Nolo — assistant, not author
Compare features side-by-side. You decide what to build.
✓ Checked — Virus-scanned clean · no leaked secrets · dependencies checked. What does this mean?
PROJECT DETAILS
Publisher@NDtech
StackHTML/CSS
Files0 · 0 views
Build methodAI-generated
LicenseMIT
Tip
DOWNLOAD
▶ Run preview
AI PROMPT — secondary detail
Create a Video Editor web app using React and Vite (npm run dev). It should have: - Upload a video file - Play / Pause / Restart buttons - Volume control slider - Playback speed buttons (0.5x, 1x, 1.5x, 2x) - 7 Video filters (None, Grayscale, Sepia, Brightness, Contrast, Blur, Invert) - Seekable timeline progress bar - Dark themed modern UI Split into components: VideoPlayer, Toolbar, Timeline, Sidebar. Give me all files including package.json and vite.config.js
⑂ FORKS — Family tree → · PRs (0) →
No remixes yet.

HOW TO ACCESS

  1. Read README
  2. Explore Files
  3. Check Evidence
  4. Remix or Download
READY TO SHIP?

Deploy your project.

Follow the official launch guide.

Open launch guide ↗
✓ Copied!