RepoPilot

NickeManarin/ScreenToGif

🎬 ScreenToGif allows you to record a selected area of your screen, edit and save it as a gif or video.

Mixed

Mixed signals β€” read the receipts

ConcernsDependency

non-standard license (MS-PL)

HealthyFork & modify

Has a license, tests, and CI β€” clean foundation to fork and modify.

HealthyLearn from

Documented and popular β€” useful reference codebase to read through.

HealthyDeploy as-is

No critical CVEs, sane security posture β€” runnable as-is.

  • ⚠Concentrated ownership β€” top contributor handles 69% of recent commits
  • ⚠Non-standard license (MS-PL) β€” review terms
  • βœ“Last commit 2w ago
  • βœ“13 active contributors
  • βœ“MS-PL licensed
  • βœ“CI configured
  • βœ“Tests present

What would improve this?

  • β†’Use as dependency Concerns β†’ Mixed if: clarify license terms

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README β€” live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/nickemanarin/screentogif?axis=fork)](https://repopilot.app/r/nickemanarin/screentogif)

Paste at the top of your README.md β€” renders inline like a shields.io badge.

β–ΈPreview social card

This card auto-renders when someone shares https://repopilot.app/r/nickemanarin/screentogif on X, Slack, or LinkedIn.

Ask AI about nickemanarin/screentogif

Grounded in the actual source code. Pick a starter question or write your own.

Or write your own question β†’

Onboarding doc

Onboarding: NickeManarin/ScreenToGif

Generated by RepoPilot Β· 2026-06-19 Β· Source

🎯Verdict

WAIT β€” Mixed signals β€” read the receipts

  • Last commit 2w ago
  • 13 active contributors
  • MS-PL licensed
  • CI configured
  • Tests present
  • ⚠ Concentrated ownership β€” top contributor handles 69% of recent commits
  • ⚠ Non-standard license (MS-PL) β€” review terms

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

⚑TL;DR

ScreenToGif is a Windows desktop application (C# / WPF) that captures screen recordings, webcam feeds, or sketchboard drawings and exports them as GIF, APNG, video, PSD, or PNG formats. It combines real-time screen capture with a frame-by-frame editor, allowing users to trim, annotate, and optimize animations before export. Monolith solution: GifRecorder.sln contains the main ScreenToGif application, a separate Translator utility (Other/Translator/) for localization workflows, and a shared model layer (ScreenToGif.Model/Enums/) with domain objects like CaptureFrequencies and AppThemes. XAML/Code-behind pattern used throughout for UI (App.xaml, Dialog.xaml, etc.).

πŸ‘₯Who it's for

Content creators, software documentation writers, and designers who need to quickly record and share short animated clips without learning complex video editing tools. Contributors are C# / WPF developers interested in media processing, Windows interop, and UI framework development.

🌱Maturity & risk

Actively maintained and production-ready. The project has substantial GitHub stars, a dedicated website (screentogif.com), distribution via Microsoft Store and Chocolatey, and requires .NET 9 Desktop Runtime (current framework). Active issue triaging and release notes visible in the workflow structure suggest ongoing development.

Single primary maintainer (NickeManarin) creates maintenance risk for a popular tool. The codebase is Windows-only (.NET Framework / WPF), limiting cross-platform adoption. No visible CI/CD pipeline logs in the file structure suggest testing coverage may be opaque. Dependencies are managed centrally in Directory.Packages.props but the full dependency tree is not shown.

Active areas of work

Discord release notifications configured (.github/workflows/discord-releases.yml), suggesting active versioning. Issue templates for bug reports and feature requests are present, indicating an open community. The project targets .NET 9 and maintains localization infrastructure (LOCALIZATION.md present), suggesting ongoing language support expansion.

πŸš€Get running

Clone the repo and open GifRecorder.sln in Visual Studio 2022+ with .NET 9 SDK installed: git clone https://github.com/NickeManarin/ScreenToGif.git && cd ScreenToGif && dotnet build GifRecorder.sln. Then run the main project from Visual Studio or via dotnet run --project <MainProjectPath>.

Daily commands: No Makefile visible. Load GifRecorder.sln in Visual Studio 2022 and press F5 to debug, or run dotnet run from the main project directory (project name inferred from sln structure). Ensure .NET 9 Desktop Runtime is installed.

πŸ—ΊοΈMap of the codebase

  • GifRecorder.sln β€” Master solution file orchestrating all projects; essential entry point for building the entire application
  • Directory.Build.props β€” Centralized build configuration and NuGet package versioning; controls compilation settings across all projects
  • ScreenToGif.Model/Enums/ExportFormats.cs β€” Core enum defining all supported export formats (GIF, MP4, WebM, etc.); fundamental to the app's feature set
  • ScreenToGif.Model/Enums/Native/WindowsMessages.cs β€” Native Windows interop constants for screen capture and window management; critical for recorder functionality
  • Other/Translator/TranslatorWindow.xaml.cs β€” Localization tool for maintaining multi-language support; essential for community contributions and translations
  • CONTRIBUTING.md β€” Contribution guidelines defining workflow, coding standards, and PR process for all contributors
  • CODE_OF_CONDUCT.md β€” Community standards and behavioral expectations for all project participants

πŸ› οΈHow to make changes

Add a new export format

  1. Add new enum value to ScreenToGif.Model/Enums/ExportFormats.cs (ScreenToGif.Model/Enums/ExportFormats.cs)
  2. Add corresponding encoder type to ScreenToGif.Model/Enums/EncoderTypes.cs (ScreenToGif.Model/Enums/EncoderTypes.cs)
  3. Implement encoder handler and wire into export pipeline (likely in main application layer, not shown in file list)
  4. Add localized strings for the new format to translator tool via Other/Translator/TranslatorWindow.xaml

Add a new UI control

  1. Create new control class inheriting from appropriate base (Button/TextBox/etc) in Other/Translator/Controls/ (Other/Translator/Controls/ExtendedTextBox.cs)
  2. Add XAML styling for the control in Other/Translator/Themes/Generic.xaml (Other/Translator/Themes/Generic.xaml)
  3. Define color scheme in Other/Translator/Themes/Colors.xaml if using theme colors (Other/Translator/Themes/Colors.xaml)
  4. Add localized label strings through the translator tool

Add native Windows interop capability

  1. Define required Windows API constants/enums in ScreenToGif.Model/Enums/Native/ subdirectory (ScreenToGif.Model/Enums/Native/WindowsMessages.cs)
  2. Reference existing patterns from WindowAttributes.cs or DeviceCaps.cs for P/Invoke signatures (ScreenToGif.Model/Enums/Native/WindowAttributes.cs)
  3. Implement managed wrapper methods in main application layer to abstract native calls

Add multi-language support for a new string

  1. Open translator tool by running Other/Translator/Translator.csproj (Other/Translator/Translator.csproj)
  2. Add new string key with English text in TranslatorWindow.xaml interface (Other/Translator/TranslatorWindow.xaml)
  3. Implement backend data binding via TranslatorWindow.xaml.cs to persist translations (Other/Translator/TranslatorWindow.xaml.cs)
  4. Export localization to resource files for use in main application

πŸ”§Why these technologies

  • WPF (Windows Presentation Foundation) β€” Enables rich desktop UI with XAML markup; native Windows integration for screen capture and window management
  • C# / .NET Framework β€” Direct P/Invoke access to Windows APIs for low-level screen capture; strong type safety for complex interop
  • Native Windows APIs (Win32) β€” Only way to capture screen at sufficient speed and fidelity; access to DPI-awareness and DWM (Desktop Window Manager) for visual effects
  • Enumeration-based design (Heavy use of enums) β€” Encapsulates export formats, encoders, and capture modes; makes feature matrix explicit and maintainable

βš–οΈTrade-offs already made

  • Windows-only desktop application (no cross-platform)

    • Why: Simplifies screen capture via native Win32 APIs; avoids complexity of abstraction layers
    • Consequence: Not available on macOS/Linux; larger user base on Windows, but excludes other platforms entirely
  • Monolithic solution with separate Translator utility

    • Why: Keeps main app focused; translator tool is specialized enough to warrant separate executable
    • Consequence: Contributors must run two separate projects; translation workflow is decoupled from main build
  • Frame buffering in memory during capture

    • Why: Enables immediate playback, editing, and fast export without re-reading from disk
    • Consequence: High RAM usage for long recordings; limits record duration on memory-constrained systems

🚫Non-goals (don't propose these)

  • Cross-platform support (Linux, macOS)
  • Real-time streaming to cloud services
  • Built-in video hosting/sharing integrations
  • Command-line batch export (appears GUI-focused)
  • Plugin or extension ecosystem

πŸͺ€Traps & gotchas

Windows-only platform (WPF does not run on macOS/Linux natively). .NET 9 Desktop Runtime required at runtime, not just .NET 9 SDK. XAML hot reload may not work in all Visual Studio configurations. The Translator utility is a separate executable and project; building the main app alone won't update localization files. No visible unit test project in file list suggests manual QA dominant.

πŸ—οΈArchitecture

πŸ’‘Concepts to learn

  • Windows Screen Capture / DXGI / GDI Interop β€” ScreenToGif must hook into Windows frame buffers to capture screen content at high frequency; understanding GDI, Direct3D, or DXGI is core to the recorder module
  • WPF Data Binding & MVVM Pattern β€” The UI is built entirely in WPF/XAML with custom converters and themes; understanding declarative binding and separation of View/ViewModel is essential for UI modifications
  • GIF Encoding (LZW Compression) β€” ScreenToGif exports frames as GIF using lossless LZW compression; knowing how frame palettes, disposal modes, and frame delays work is critical for the export engine
  • APNG (Animated PNG) β€” Modern APNG export requires PNG chunk manipulation and frame sequencing; ScreenToGif offers APNG as a GIF alternative with better compression
  • Frame-Based Video Encoding (libav/FFmpeg Integration) β€” Video export (MP4, WebM, etc.) likely uses FFmpeg or similar; understanding frame rates, codecs, and bitrate control is necessary for video output features
  • Windows P/Invoke & Unmanaged Interop β€” Screen capture and clipboard access require direct Windows API calls (GetDC, BitBlt, etc.); P/Invoke marshaling and memory safety are critical for stability
  • XAML Theming & Resource Dictionaries β€” ScreenToGif uses centralized theme files (Colors.xaml, Buttons.xaml) for UI consistency; understanding XAML resource scoping and dynamic theme switching is essential for design work
  • ShareX/ShareX β€” Popular Windows screenshot and screen recording tool with GIF export; direct competitor and reference for UI/UX patterns in the screen capture domain
  • phw198/GifCam β€” Lightweight GIF recording tool; smaller alternative that influenced the minimal-UI design philosophy of screen capture tools
  • thibaultimaging/PeaZip β€” Cross-platform Windows/.NET archive tool; demonstrates multi-format export patterns relevant to ScreenToGif's GIF/APNG/video output strategy
  • dotnet/wpf β€” The underlying WPF framework repository; critical for understanding rendering, XAML compilation, and Windows interop used throughout ScreenToGif
  • dotnet/runtime β€” .NET runtime repository; essential reference for .NET 9 runtime behavior, memory management, and P/Invoke interop for screen capture APIs

πŸͺ„PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add localization tests for the Translator tool

The repo has a comprehensive localization system (LOCALIZATION.md exists) and a dedicated Translator application in Other/Translator/, but there appear to be no unit tests validating translation file integrity, missing keys across languages, or the Translator UI functionality. This would prevent regressions when contributors add new strings or update translations.

  • [ ] Create ScreenToGif.Tests project (or add to existing test project) with LocalizationTests.cs
  • [ ] Add tests that validate all language files have matching keys using Other/Translator/App.xaml.cs as reference
  • [ ] Add tests for the MultiLineTitle converter in Other/Translator/Converters/MultiLineTitle.cs
  • [ ] Add integration test for TranslatorWindow.xaml.cs to ensure it loads and saves translations correctly
  • [ ] Document test coverage in CONTRIBUTING.md

Add enum validation tests for ScreenToGif.Model/Enums/

The repo has 30+ enum types in ScreenToGif.Model/Enums/ (EncoderTypes, ExportFormats, HardwareAcceleration, etc.) that are critical to the recording/encoding pipeline. There are no visible tests validating enum values, serialization/deserialization, or that UI/config bindings use valid enum values. Missing or invalid enum states could cause silent failures.

  • [ ] Create ScreenToGif.Tests/EnumTests.cs with parameterized tests for each enum in ScreenToGif.Model/Enums/
  • [ ] Validate each enum can be serialized to/from config (relates to Directory.Build.props and Directory.Packages.props dependencies)
  • [ ] Add specific tests for EncoderTypes.cs and ExportFormats.cs since these directly impact export quality
  • [ ] Test that GifskiErrorCodes.cs enum values map correctly to actual Gifski library error codes
  • [ ] Add tests to catch accidental enum value changes that break backward compatibility

Add GitHub Actions workflow for cross-platform build validation

The repo has .github/workflows/discord-releases.yml but no visible CI for validating builds on Windows/Linux/macOS before merging. Given the complexity (recording, encoding, GIF/video export, theming via .xaml files), a build matrix would catch platform-specific issues early. The .editorconfig and .gitattributes suggest multi-OS support is important.

  • [ ] Create .github/workflows/build-validation.yml with matrix for Windows, Linux (via Wine/Mono if needed for WPF), and macOS
  • [ ] Validate that GifRecorder.sln builds successfully on all platforms
  • [ ] Run tests in ScreenToGif.Tests on all platforms (add step to detect if tests exist)
  • [ ] Validate Other/Translator/Translator.csproj builds (localization tool must work correctly)
  • [ ] Add artifact upload for build logs to help debug platform-specific failures
  • [ ] Document the CI expectations in CONTRIBUTING.md

🌿Good first issues

  • Add unit tests for ScreenToGif.Model/Enums/ classes (CaptureFrequencies, AppThemes, etc.) β€” currently no test project visible in the structure, a good entry point for test infrastructure setup
  • Document the Translator tool setup and workflow in a TRANSLATOR_SETUP.md file β€” the tool exists but new contributors must reverse-engineer how to use it from code
  • Create a .NET 9 upgrade guide in CONTRIBUTING.md listing breaking changes from .NET Framework β€” the codebase targets .NET 9 but migration steps are not documented for fork/branch contributors

⭐Top contributors

Click to expand

πŸ“Recent commits

Click to expand
  • 27a49c3 β€” Added English (UK) translation and updated Traditional Chinese one. (NickeManarin)
  • 9227e5c β€” Merge branch 'dev' (NickeManarin)
  • 244aae7 β€” Version bump (NickeManarin)
  • 15dbe08 β€” Fixed FFmpeg verification (NickeManarin)
  • 2e5664d β€” Update StringResources.de.xaml (Mr-Update)
  • adc35fd β€” Fixed issue with automated task missing loaded event (NickeManarin)
  • 06646c1 β€” Small twek to style and ffmpeg download (NickeManarin)
  • db18fb5 β€” Merge branch 'dev' (NickeManarin)
  • a89e116 β€” Fixing the rest of the missing fields (NickeManarin)
  • f37d01d β€” Merge branch 'dev' (NickeManarin)

πŸ”’Security observations

ScreenToGif appears to be a mature desktop application with moderate security posture. The primary concerns are related to native interop operations (P/Invoke), file system operations inherent to screen recording/editing functionality, and external process execution for encoding. The absence of visible hardcoded credentials or SQL injection risks is positive. Key recommendations include: (1) rigorous input validation for all Windows API calls, (2) secure file path handling with traversal prevention, (3) safe command-line argument escaping for external process calls, and (4) regular dependency audits. The .NET/WPF platform provides some inherent security benefits, but careful attention to native interop is essential for a screen capture application.

  • Medium Β· Native P/Invoke Usage Without Validation β€” ScreenToGif.Model/Enums/Native/. The codebase contains extensive Native enum definitions (e.g., Native/DeviceCaps.cs, Native/DwmWindowAttributes.cs) suggesting P/Invoke calls to Windows APIs. P/Invoke usage requires careful validation of inputs and outputs to prevent buffer overflows, integer overflows, and privilege escalation attacks. Fix: Implement strict input validation for all P/Invoke calls, use safe marshaling practices, validate buffer sizes, and consider using safer alternatives where available. Add bounds checking for all native interop operations.
  • Medium Β· Potential Unsafe File Operations β€” ScreenToGif codebase (encoding/export functionality implied). A screen recording application likely performs extensive file I/O operations (encoding, saving GIFs/videos). Without visible security controls in the file structure, there is risk of path traversal, unauthorized file access, or insecure temporary file creation. Fix: Validate all file paths using Path.GetFullPath() and restrict to intended directories. Use secure temporary file creation (Path.GetTempFileName()), implement proper file permissions, and sanitize file names to prevent traversal attacks.
  • Medium Β· External Process Execution (Gifski Encoding) β€” ScreenToGif.Model/Enums/GifskiErrorCodes.cs (implies external tool usage). The presence of GifskiErrorCodes enum indicates execution of external processes for GIF encoding. External process execution is a high-risk operation vulnerable to injection attacks if command-line arguments are not properly escaped. Fix: Use ProcessStartInfo with UseShellExecute=false, ShellExecuteEx=false. Pass all arguments as separate parameters in ArgumentList, never concatenate strings. Validate and sanitize all user-controlled input before passing to external processes.
  • Low Β· Missing Dependency Visibility β€” Directory.Packages.props. The Package dependencies file content is not provided, making it impossible to verify for known vulnerable NuGet packages or outdated dependencies. Fix: Regularly audit NuGet dependencies using tools like dotnet list package --vulnerable. Enable automatic security updates and consider using dependabot for continuous monitoring.
  • Low Β· Potential Information Disclosure via Error Handling β€” Other/Translator/ExceptionDialog.xaml, Other/Translator/ExceptionViewer.xaml. The presence of ExceptionDialog and ExceptionViewer components suggests exception information may be displayed to users, potentially revealing sensitive information about the application's internal structure. Fix: Implement secure error handling that logs detailed exceptions server-side while showing generic user-friendly messages. Never expose stack traces, file paths, or internal implementation details to end users.
  • Low Β· XAML Deserialization Risks β€” ScreenToGif codebase (multiple .xaml files). Multiple XAML files throughout the codebase could be vulnerable to XAML injection if dynamic XAML is loaded or parsed from untrusted sources. Fix: Avoid dynamically loading or parsing XAML from untrusted sources. If necessary, implement strict validation and use XamlReader with security restrictions. Keep XAML markup static and compile-time verified.

LLM-derived; treat as a starting point, not a security audit.

πŸ€–Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale β€” STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI Β· unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/NickeManarin/ScreenToGif shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything β€” but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

βœ…Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live NickeManarin/ScreenToGif repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale β€” regenerate it at repopilot.app/r/NickeManarin/ScreenToGif.

What it runs against: a local clone of NickeManarin/ScreenToGif β€” the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in NickeManarin/ScreenToGif | Confirms the artifact applies here, not a fork | | 2 | License is still MS-PL | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≀ 42 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> β€” paste this script from inside your clone of <code>NickeManarin/ScreenToGif</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of NickeManarin/ScreenToGif. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/NickeManarin/ScreenToGif.git
#   cd ScreenToGif
#
# Then paste this script. Every check is read-only β€” no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of NickeManarin/ScreenToGif and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "NickeManarin/ScreenToGif(\\.git)?\\b" \\
  && ok "origin remote is NickeManarin/ScreenToGif" \\
  || miss "origin remote is not NickeManarin/ScreenToGif (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(MS-PL)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"MS-PL\"" package.json 2>/dev/null) \\
  && ok "license is MS-PL" \\
  || miss "license drift β€” was MS-PL at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "GifRecorder.sln" \\
  && ok "GifRecorder.sln" \\
  || miss "missing critical file: GifRecorder.sln"
test -f "Directory.Build.props" \\
  && ok "Directory.Build.props" \\
  || miss "missing critical file: Directory.Build.props"
test -f "ScreenToGif.Model/Enums/ExportFormats.cs" \\
  && ok "ScreenToGif.Model/Enums/ExportFormats.cs" \\
  || miss "missing critical file: ScreenToGif.Model/Enums/ExportFormats.cs"
test -f "ScreenToGif.Model/Enums/Native/WindowsMessages.cs" \\
  && ok "ScreenToGif.Model/Enums/Native/WindowsMessages.cs" \\
  || miss "missing critical file: ScreenToGif.Model/Enums/Native/WindowsMessages.cs"
test -f "Other/Translator/TranslatorWindow.xaml.cs" \\
  && ok "Other/Translator/TranslatorWindow.xaml.cs" \\
  || miss "missing critical file: Other/Translator/TranslatorWindow.xaml.cs"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 42 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~12d)"
else
  miss "last commit was $days_since_last days ago β€” artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) β€” safe to trust"
else
  echo "artifact has $fail stale claim(s) β€” regenerate at https://repopilot.app/r/NickeManarin/ScreenToGif"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

Generated by RepoPilot. Verdict based on maintenance signals β€” see the live page for receipts. Re-run on a new commit to refresh.

Embed this chat in your README β†’

Drop this iframe anywhere β€” the widget runs against the same live analysis cache as the main app.

<iframe
  src="https://repopilot.app/embed/nickemanarin/screentogif"
  width="100%" height="500"
  style="border:1px solid #d0d7de; border-radius:8px;"
  allow="microphone"
  loading="lazy"
></iframe>