diff --git a/browser/browser.go b/browser/browser.go
index 387dad3..728fe3f 100644
--- a/browser/browser.go
+++ b/browser/browser.go
@@ -3,6 +3,7 @@
 
 import (
 	"log/slog"
+	"os"
 	"os/exec"
 	"runtime"
 	"strings"
@@ -10,23 +11,43 @@
 
 // Open opens the specified URL in the system's default browser.
 // It detects the OS and uses the appropriate command:
-// - 'open' for macOS
-// - 'cmd /c start' for Windows
-// - 'xdg-open' for Linux and other Unix-like systems
+// - 'open' for macOS (with optional -a flag if SKETCH_BROWSER is set)
+// - 'cmd /c start' for Windows (or direct browser executable if SKETCH_BROWSER is set)
+// - 'xdg-open' for Linux and other Unix-like systems (or direct browser executable if SKETCH_BROWSER is set)
+//
+// If SKETCH_BROWSER environment variable is set, it will be used as the browser application:
+// - On macOS: passed to 'open -a'
+// - On Windows/Linux: used as direct executable
 func Open(url string) {
 	if strings.TrimSpace(url) == "" {
 		return
 	}
+
+	browser := os.Getenv("SKETCH_BROWSER")
 	var cmd *exec.Cmd
+
 	switch runtime.GOOS {
 	case "darwin":
-		cmd = exec.Command("open", url)
+		if browser != "" {
+			cmd = exec.Command("open", "-a", browser, url)
+		} else {
+			cmd = exec.Command("open", url)
+		}
 	case "windows":
-		cmd = exec.Command("cmd", "/c", "start", url)
+		if browser != "" {
+			cmd = exec.Command(browser, url)
+		} else {
+			cmd = exec.Command("cmd", "/c", "start", url)
+		}
 	default: // Linux and other Unix-like systems
-		cmd = exec.Command("xdg-open", url)
+		if browser != "" {
+			cmd = exec.Command(browser, url)
+		} else {
+			cmd = exec.Command("xdg-open", url)
+		}
 	}
+
 	if b, err := cmd.CombinedOutput(); err != nil {
-		slog.Debug("failed to open browser", "err", err, "url", url, "output", string(b))
+		slog.Debug("failed to open browser", "err", err, "url", url, "output", string(b), "browser", browser)
 	}
 }
