NickeManarin/ScreenToGif · error · ApplicationException

Gifski not present.

Error message

Gifski not present.

What it means

EncodingManager throws ApplicationException when the user picks the Gifski encoder but PathHelper.IsGifskiPresent() returns false. IsGifskiPresent checks UserSettings.All.GifskiLocation, the app folder, the ProgramData folder, and the PATH environment variable for gifski.dll; if none resolves to an existing file, encoding is aborted before any frame is processed.

Source

Thrown at ScreenToGif/Util/EncodingManager.cs:787

                            #endregion

                            break;

                        case EncoderTypes.FFmpeg:
                            await EncodeWithFfmpeg(preset, project.FramesFiles, id, tokenSource, processing);
                            break;

                        case EncoderTypes.Gifski:
                        {
                            #region Gifski encoding

                            Update(id, EncodingStatus.Processing, null, true);

                            if (preset is not GifskiGifPreset gifskiGifPreset)
                                return;

                            if (!PathHelper.IsGifskiPresent())
                                throw new ApplicationException("Gifski not present.");

                            if (File.Exists(preset.FullPath))
                                File.Delete(preset.FullPath);

                            var size = project.FramesFiles[0].Path.ScaledSize();

                            try
                            {
                                using var gifski = new GifskiInterop();
                                var handle = gifski.Start((uint)size.Width, (uint)size.Height, gifskiGifPreset.Quality, gifskiGifPreset.RepeatForever, gifskiGifPreset.Fast);

                                if (gifski.IsOlderThan0Dot9)
                                {
                                    #region Older

                                    ThreadPool.QueueUserWorkItem(delegate
                                    {
                                        Thread.Sleep(500);

View on GitHub (pinned to a4d0a67c21)

Solutions

  1. Open Options > Plugins and download gifski.dll, or point the Gifski location to an existing gifski.dll.
  2. Run the 64-bit build of ScreenToGif — gifski is x64-only.
  3. Restore gifski.dll to the app folder or to %ProgramData%\ScreenToGif\.
  4. Re-validate with PathHelper.IsGifskiPresent() in the export panel before allowing the user to start the export.

Example fix

// before
if (!PathHelper.IsGifskiPresent())
    throw new ApplicationException("Gifski not present.");

// after
if (!PathHelper.IsGifskiPresent())
    throw new ApplicationException("Gifski not present. Download gifski.dll via Options > Plugins or set the path. (x64 build required.)");
Defensive patterns

Strategy: validation

Validate before calling

if (preset is GifskiGifPreset && !PathHelper.IsGifskiPresent())
{
    // disable the export button, prompt download via Options > Plugins
}

Type guard

bool CanUseGifskiEncoder => Environment.Is64BitProcess && PathHelper.IsGifskiPresent();

Try / catch

try { /* encode with Gifski */ }
catch (ApplicationException ex) when (ex.Message == "Gifski not present.")
{ /* open Plugins settings to download gifski */ }

Prevention

When it happens

Trigger: Export with EncoderTypes.Gifski when gifski.dll cannot be located by AdjustPath(GifskiLocation), AdjustPath("gifski.dll"), %ProgramData%\ScreenToGif\gifski.dll, or any PATH entry. The 32-bit build also fails because gifski is x64-only.

Common situations: Fresh install where gifski was never downloaded; user picked Gifski encoder type without first downloading the binary via Options > Plugins; gifski.dll was deleted by AV or the user; 32-bit ScreenToGif build; the configured GifskiLocation points to a moved/renamed file.

Related errors


AI-assisted analysis of NickeManarin/ScreenToGif@a4d0a67c21 (2026-08-13). Data as JSON: /api/errors/38e408ce04ba331a. Report an issue: GitHub.