Download foobar2000 Software Development Kit

Latest version:
SDK 2021-02-23

Latest backwards-compatible version:
SDK 2019-06-30
This version is backwards compatible with existing source code predating libPPUI.

Included project files are for Visual Studio 2017.
Certain workarounds are still needed for modern Visual C++ toolchain to compile foobar2000 code correctly. Please read the included readme document for detailed information.

Archived versions:
SDK 2021-02-15
SDK 2021-01-29
SDK 2020-07-28
SDK 2019-12-27
SDK 2019-11-29
SDK 2019-09-18
SDK 2019-09-04
SDK 2019-07-26
SDK 2019-07-09
SDK 2019-06-30
SDK 2019-06-17
SDK 2018-10-11
SDK 2018-09-29
SDK 2018-03-06
SDK 2018-02-05
SDK 2018-01-11
SDK 2015-08-03
SDK 2015-01-14
SDK 2014-07-02
SDK 2011-03-11 ( compatible with foobar2000 v1.2.x series )

Change log


  • Fixed various issues revealed by compiling with Clang.


  • Fixed missing #ifdef checks in popup_message.cpp, causing failure to compile targetting foobar2000 v1.4 series.
  • Removed leftover empty ATLHelpers folder.


  • Added foobar2000 v1.6-series resampler & output API extensions.
  • Added packet_decoder partial-support mode.
  • Added foobar2000 v1.6-series library manager extensions for asynchronous autocomplete.
  • Added interface to access foobar2000 v1.6-series picture viewer window.
  • Fixed an obscure bug in PFC bit_array_flatIndexList.
  • Fixed mishandling of Ctrl+Backspace in libPPUI edit box hooks.
  • Improved performance of CTreeMultiSel in libPPUI.


  • foobar2000 v1.6 features included, see readme doc.
  • Now configured to build for Windows 7 and newer with SSE2 by default.
  • Minor libPPUI updates, added combo boxes in CListControl.


  • More fixes for /fpermissive-.
  • Preview of fb2k v1.6 output API extensions.


  • foobar2000 v1.5 stable
  • Fixed rare race condition in read-ahead helper code.
  • Fixed rare CListControl crash.
  • Added helper methods to copy creation/modification time between files.


  • Visual Studio 2019 compatibility improvements.


  • libPPUI work-in-progress and binary size optimizations; new extensible system of CListControl cells.
  • Added playback stream capture sample.
  • Latest foobar2000 v1.5 beta API additions: input_playback_shim, input_info_filter.
  • Corrected outdated info in readme doc.
  • Default target is now foobar2000 1.4 and newer (API 79).


  • libPPUI fixes.
  • Added dynamic main menu item example.


  • Introducing libPPUI, replacing old helpers/ATLHelpers tools.
  • libPPUI contains all helper code that is not foobar2000-specific; it can be utilized in foobar2000 components as well as separate unrelated programs. It comes with an unrestrictive license.
  • Published CListControl source code (now part of libPPUI), which is the basis of the Default User Interface playlist view.
  • Published new programming interfaces introduced with foobar2000 v1.5.
  • Everything should compile with /fpermissive-.
  • Due to structural changes (code moved from helpers to libPPUI), existing source code may need editing (different #includes) to compile.


  • Fixed WTL v10 compatibility.


  • Published async_task_manager & fb2k::splitTask() API for v1.4.5 and newer.
  • New modules in sample component.
  • Removed unnecessary OverrideCrtAbort() on component init if compiling for DLL VC runtime.


  • Published file_lock_manager API.


  • PFC bug fixes
  • UI helpers (edit-with-button) bug fixes
  • Updated sample component, added I/O test
  • Added helper code to format audio peak in decibels
  • Filesystem API cleanups
  • Added fb2k::sort() - abortable multithreaded quicksort - now used for track sorting operations
  • Added preferences_state::needs_rescan_library (understood by v1.4.1 and up)
  • Documentation updates
  • Helpers: Updated read-ahead-cache reader wrapper
  • Bumped highest allowed audio_chunk sample rate to deal with DSD


  • Added filesystem_v2, filesystem_transacted, user_interface_v2, ui_element_common_methods_v3 APIs introduced in 1.4 beta 7.
  • Added framework to create UI Elements hosting other UI Elements - see ATLHelpers / ui_element_helpers.h.


  • Added input_stream_manipulator, replaygain_alter_stream and replaygain_scanner_entry_v2 for new ReplayGain scanner in 1.4 beta 4.
  • Added ui_element_subclass_dsp
  • Bug fixes to helpers, CEditWithButtons in particular. Reusing in your own projects is welcome.
  • A less restrictive license - common sense cannot be enforced.


  • Visual Studio 2017 project files included and working out-of-the-box.
  • foobar2000 v1.4 beta features included. You can now declare decoders that correctly appear in the list.
  • The SDK is backwards-compatible with foobar2000 v1.3, you can enable v1.4 features without breaking v1.3 compatibility.
  • PFC namespacing cleaned up, some code may need fixing to correctly reference PFC classes that were in the global namespace before.
  • Various internal tweaks to allow smaller component DLLs.
  • foo_sample updated, added metadb_index_client+metadb_display_field_provider+track_property_provider demo (rating.cpp).


  • Now Visual Studio 2015 compatible. Fixed FOOGUIDDECL (__declspec(selectany)) abuse which was originally added to deal with MSVC6 bug.
  • PFC updates from foobar2000 mobile. PFC now compatible with WinRT, works in Windows Store / Windows Phone / Windows Universal apps.
  • Added C++11 lamba helpers for use with main_thread_callback and completion_notify.
  • Out-of-the-box working foo_sample.sln


  • Big update, lots of helper classes and structure changes from foobar2000 mobile codebase.
  • New callInMainThreadHelper class for simplified main_thread_callback use. See main_thread_callback.h
  • PFC library is now public domain (unlicense).
  • PFC library works on all major platforms - OSX, iOS, Linux.
  • PFC library now provides OS basic abstraction for common objects such as threads.


  • Corrected CPowerRequest.h not compiling in VS 2010.


  • New metadb API methods introduced in foobar2000 v1.3 - see SDK readme file for details.
  • Published audio output component specification, along with foobar2000 v1.2 extensions for volume control.
  • foobar2000 v1.3 or newer required to run components made with this SDK.


  • Included decode_postprocessor API - for transparent HDCD and DTS decoding.
  • Included project files for Visual Studio 10.
  • foobar2000 v1.1 or newer required to run components made with this SDK.


  • Clarified preferences page API documentation to warn about known source of spooky crashes.
  • Updated preferences page framework in ATLHelpers to workaround the above.


  • Preliminary documentation for upcoming foobar2000 1.1 features.


  • Sample code updates, new UI Element sample.
  • Helper macro bug fix (thanks musicmusic).
  • New measures to make certain types of crashes easier to track.


  • Updated to include foobar2000 v1.0 features - components built with this SDK require foobar2000 v1.0 or newer.
  • Completely new sample component demonstrating various functionality.
  • Included Default User Interface element specifications.
  • Improved compatibility with MSVC10.


  • Fixed invalid data handling bugs in string manipulation helpers.


  • Fixed a major bug in the Decoder Validator component.
  • Updated documentation of various DSP related APIs.


  • Fixed a bug in context menu generation code.


  • Added access to new features introduced in foobar2000 extensions to the autoplaylist APIs, new API to access Media Library Search user interface.
  • Updated documentation - including notes regarding future compatibility and planned changes the library_manager API.
  • Updated Decoder Validator component.


  • Added access to new features introduced in foobar2000 extensions to search_filter and autoplaylist_client APIs, replaygain_scanner API.
  • Updated documentation.


  • Added access to new features introduced in foobar2000 versions 0.9.5, and Version 0.9.5 or newer is now required to load components made with this SDK.
  • Structural changes in included helper libraries, some parts of them now depend on WTL.
  • Updated documentation.
  • Updated Decoder Validator component.


  • Fixed pfc::sort performance problem.


  • Added access to new features introduced in 0.9.4. Version 0.9.4 or newer is required to load components made with this SDK.


  • Resolved incompatibility with _expand() behaviors on Windows Vista. It is recommended to recompile all components built with older versions of the SDK with an updated version to avoid incompatibility with Windows Vista.