Welcome to the source repository for Greenshot.
Greenshot is a light-weight screenshot software tool for Windows with the following key features:
- Quickly create screenshots of a selected region, window or fullscreen.
- Easily annotate, highlight or obfuscate parts of the screenshot.
- Export the screenshot in various ways: save to file, send to printer, copy to clipboard, attach to e-mail, send Office programs or upload to photo sites like Flickr or Picasa, and others. and a lot more options simplifying creation of and work with screenshots every day.
Being easy to understand and configurable, Greenshot is an efficient tool for project managers, software developers, technical writers, testers and anyone else creating screenshots.
The Greenshot logo and trademark are the property of the Greenshot development team. Unauthorized use of the logo and trademark is generally prohibited. However, we allow the use of the Greenshot name and logo in the following contexts:
- In blog posts, articles, or reviews that discuss or promote the Greenshot, provided that the usage is fair and does not imply endorsement by Greenshot.
- In educational materials or presentations that accurately represent the project.
Please refrain from using the Greenshot logo and trademark in any promotional materials, products, or in a manner that may cause confusion or imply endorsement without prior written permission.
If you have any questions or wish to seek permission for other uses, please contact us.
Thank you for your understanding and cooperation.
This is the ongoing development branch for future Greenshot releases.
You can find a list of all releases (stable and unstable) in the Github releases or in the version history on our website. The downloads page on our website always links to the latest stable release.
These instructions are made to assist developers in getting started with Greenshot so they can contribute to the repository. Please verify system prerequisites are met before trying to build.
- Windows OS environment
- Visual Studio 2026 (the native projects use the v145 C++ toolset), with the Desktop development with C++ workload, MSVC v145 x64/x86 build tools, and a Windows 10 SDK
- .NET SDK 10.0.100 or newer (Greenshot.Mcp targets .NET 10)
- .NET Framework 4.8 Developer Pack / targeting pack
- Open Visual Studio 2026
- Clone GitHub Repository using Visual Studio, using the link in the green code button above. Alternatively, you can download the repository to your machine and open the solution file located in /src/Greenshot.sln.
- Choose Build->Build Solution in Visual Studio to build binaries.
- Verify all components are built successfully.
- You are ready to start contributing to Greenshot.
Use Visual Studio's MSBuild with msbuild src\Greenshot.sln /p:Configuration=Debug /t:Build /v:minimal to build the release version. Use MSBuild rather than dotnet build.
| Configuration | Builds | Output |
|---|---|---|
| Debug (the default) | Everything but the installer project: Greenshot, the plugins, greenshot-cli.exe and greenshot-proxy, greenshot-mcp, the tests | src\Greenshot\bin\Debug |
| Release | Everything, plus the release files: checksum.SHA256, the SBOM, Greenshot Light, the installers and greenshot-mcp | src\Greenshot\bin\Release and installer\ |
| Debug Light | Greenshot Light only: Greenshot, Greenshot.Base, Greenshot.Editor (and the build tasks) | src\Greenshot\bin\Debug-Light |
| Release Light | The same, optimized | src\Greenshot\bin\Release-Light |
Debug never makes checksums, an SBOM or installers; only Release does.
The xUnit test project is src\Greenshot.Tests\Greenshot.Tests.csproj. Build the solution with Visual Studio MSBuild first, then run the tests:
dotnet test src\Greenshot.Tests\Greenshot.Tests.csproj --configuration DebugTests that need clipboard or desktop interaction require an active, unlocked Windows session; interactive-desktop tests are skipped when the session is locked or inactive.
Greenshot Light is the basics only: no plugins, no AI tools (greenshot-mcp) and no browser extension. That code is not in its Greenshot.exe at all: it is left out with #if !GREENSHOT_LIGHT and <Compile Remove> in Greenshot.csproj, and the build fails when one of those types is still in the exe. Pick "Debug Light" in the solution configuration dropdown to run it with F5. On the command line, dotnet build src\Greenshot\Greenshot.csproj -c DebugLight (or /p:GreenshotEdition=Light) does the same.
The edition is in Greenshot.exe ([AssemblyMetadata("GreenshotEdition", "Light")] and the product name in its file properties); Greenshot.Base.Core.EditionInfo reads it, for the About window, the tray icon, the log and the bug reports. Another edition is another value of the GreenshotEdition property (see src\Directory.Build.props).
Images, icons and sounds for Windows Forms are embedded as plain files, not in .resx files: binary data in a .resx needs System.Resources.Extensions and its dependencies in the output, and the build fails when a .resx contains anything but strings.
- An image of the editor goes to
src\Greenshot.Editor\Resources\<control>.Image.png, e.g.btnSave.Image.png. The wildcardEmbeddedResourcein Greenshot.Editor.csproj (LogicalNameGreenshot.Editor.Forms.ImageEditorForm.%(Filename)) picks it up, nothing else to add there. The icons of the tray menu work the same way withsrc\Greenshot\Resources\Tray(LogicalNameGreenshot.Shell.TrayMenu.%(Filename)). - Anything else:
<EmbeddedResource Include="..." LogicalName="<Namespace>.<Type>.<name>" />in the project, the type being the one the resource belongs to. - Load it with
EmbeddedResources.GetImage,GetIconorGetBytes(typeof(<Type>), "<name>"); the caller disposes what it gets. - Never set an image with the Image property in the Windows Forms designer, it writes the image into the .resx. Assign it in the code of the form, e.g. in
ApplyImages()of ImageEditorForm.cs. - WPF is not affected: its images are
Resourceitems with pack URIs, as before.
This is for Greenshot 1.4.x, Greenshot 1.3 doesn't use ImageSharp!
Some NuGet audit warnings are suppressed with NuGetAuditSuppress in src\Directory.Build.props, because they don't apply to Greenshot or are worked around. The reasons are listed here. Remove the suppression when the package is updated.
SixLabors.ImageSharp 2.1.13. These advisories are fixed only in 4.1.2, which no longer supports .NET Framework, and there is no 2.1.x fix. Greenshot only loads and saves files with ImageSharp when "beta tester" is on (ImageSharpFileFormatHandler); otherwise System.Drawing is used.
| Advisory | Severity | What it is | Why Greenshot is not affected |
|---|---|---|---|
| GHSA-wmxv-xphr-5c9g | Moderate | A crafted BigTIFF makes the EXIF reader loop for a long time | Worked around: ImageSharp doesn't load .tif/.tiff, WIC does (PR #1472) |
| GHSA-gwg2-r3hj-4w44 | Moderate | A crafted ICC profile causes a large allocation | In 2.x only reached by reading IccProfile.Entries, which Greenshot doesn't do |
| GHSA-j3p4-wp97-rph4 | High | Out-of-bounds write in HistogramEqualization on a float TIFF decoded as HalfVector4 |
Greenshot uses neither, and no longer decodes TIFF with ImageSharp |
| GHSA-j9gm-c75j-xc9q | High | Out-of-bounds write in the TIFF encoder with CCITT Group 3 compression | Needs a 1-bit CCITT encode, set directly or kept from a decoded TIFF; Greenshot saves 8 or 24 bit with default compression from a GDI+ bitmap |
| GHSA-jjfr-hcj7-qf5w | High | Out-of-bounds write in the TIFF encoder with CCITT Group 4 compression | Same as above |
- Create your own fork of the main repository
- Make desired changes (REMEMBER: keep commits small and concise, don't try to add multiple separate changes at once)
- Submit a pull request for review. Your request will be reviewed and either accepted, denied, or you may be asked to make revisions before your code is accepted.