Skip to content

coldpour/OpenCut

 
 
OpenCut Logo

OpenCut

A free, open-source video editor for web, desktop, and mobile.

Why?

  • Privacy: Your videos stay on your device
  • Free features: Most basic CapCut features are now paywalled
  • Simple: People want editors that are easy to use - CapCut proved that

Features

  • Timeline-based editing
  • Multi-track support
  • Real-time preview
  • No watermarks or subscriptions
  • Analytics provided by Databuddy, 100% Anonymized & Non-invasive.
  • Blog powered by Marble, Headless CMS.

Project Structure

  • apps/web/ – Main Next.js web application
  • src/components/ – UI and editor components
  • src/hooks/ – Custom React hooks
  • src/lib/ – Utility and API logic
  • src/stores/ – State management (Zustand, etc.)
  • src/types/ – TypeScript types

Getting Started

Prerequisites

Before you begin, ensure you have the following installed on your system:

Note: Docker is optional, but it's essential for running the local database and Redis services. If you're planning to run the frontend or want to contribute to frontend features, you can skip the Docker setup. If you have followed the steps below in Setup, you're all set to go!

Setup

  1. Fork the repository

  2. Clone your fork locally

  3. Navigate to the web app directory: cd apps/web

  4. Copy .env.example to .env.local:

    # Unix/Linux/Mac
    cp .env.example .env.local
    
    # Windows Command Prompt
    copy .env.example .env.local
    
    # Windows PowerShell
    Copy-Item .env.example .env.local
  5. Install dependencies: bun install

  6. Start the development server: bun dev

Development Setup

Local Development

  1. Start the database and Redis services:

    # From project root
    docker-compose up -d
  2. Navigate to the web app directory:

    cd apps/web
  3. Copy .env.example to .env.local:

    # Unix/Linux/Mac
    cp .env.example .env.local
    
    # Windows Command Prompt
    copy .env.example .env.local
    
    # Windows PowerShell
    Copy-Item .env.example .env.local
  4. Configure required environment variables in .env.local:

    Required Variables:

    # Database (matches docker-compose.yaml)
    DATABASE_URL="postgresql://opencut:opencut@localhost:5432/opencut"
    
    # Generate a secure secret for Better Auth
    BETTER_AUTH_SECRET="your-generated-secret-here"
    BETTER_AUTH_URL="http://localhost:3000"
    
    # Redis (matches docker-compose.yaml)
    UPSTASH_REDIS_REST_URL="http://localhost:8079"
    UPSTASH_REDIS_REST_TOKEN="example_token"
    
    # Marble Blog
    MARBLE_WORKSPACE_KEY=cm6ytuq9x0000i803v0isidst # example organization key
    NEXT_PUBLIC_MARBLE_API_URL=https://api.marblecms.com
    
    # Development
    NODE_ENV="development"

    Generate BETTER_AUTH_SECRET:

    # Unix/Linux/Mac
    openssl rand -base64 32
    
    # Windows PowerShell (simple method)
    [System.Web.Security.Membership]::GeneratePassword(32, 0)
    
    # Cross-platform (using Node.js)
    node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
    
    # Or use an online generator: https://generate-secret.vercel.app/32
  5. Run database migrations: bun run db:migrate from (inside apps/web)

  6. Start the development server: bun run dev from (inside apps/web)

The application will be available at http://localhost:3000.

Auto Live Clip MVP

Auto Live Clip builds an editable timeline from:

  • one camera video
  • one separate master audio mix

Run analyzer service

From repository root:

PYTHONPATH=apps/analyzer python3 -m app.main

Analyzer default URL: http://127.0.0.1:8765

Run web app

cd apps/web
bun run dev

Use in editor

  1. Import one video and one master audio file in Media.
  2. Open Auto Live Clip tab in the left tools panel.
  3. Select source video + master audio, keep defaults or tweak options.
  4. Click Analyze & Build Timeline.
  5. Review segment explanations and click any segment to jump/select it on timeline.
  6. Export with Export 1080p, Export 2K, or Export 4K.

Privacy note

  • Auto Live Clip favors stage-centered framing and de-prioritizes crowd regions.
  • Crowd blur is only applied for segments flagged as crowd-risk.

Dev notes

  • Explainability metadata is stored on each scene at:
    • scene.autoLiveClip.analysis
  • Segment entries persist trackId + elementId so clicking explanations can re-select timeline cuts.
  • Multi-cam can extend by replacing one-segment source with angle-scored candidates per segment while reusing the same metadata shape.

Contributing

We welcome contributions! While we're actively developing and refactoring certain areas, there are plenty of opportunities to contribute effectively.

🎯 Focus areas: Timeline functionality, project management, performance, bug fixes, and UI improvements outside the preview panel.

⚠️ Avoid for now: Preview panel enhancements (fonts, stickers, effects) and export functionality - we're refactoring these with a new binary rendering approach.

See our Contributing Guide for detailed setup instructions, development guidelines, and complete focus area guidance.

Quick start for contributors:

  • Fork the repo and clone locally
  • Follow the setup instructions in CONTRIBUTING.md
  • Create a feature branch and submit a PR

Sponsors

Thanks to Vercel and fal.ai for their support of open-source software.

Vercel OSS Program Powered by fal.ai

Deploy with Vercel

License

MIT LICENSE


Star History Chart

About

The open-source CapCut alternative

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 92.4%
  • Python 6.9%
  • Other 0.7%