GIS Plugins

Home › QGIS 4 readiness › Adopt a plugin

This week’s porting candidate · Week of

Adopt a QGIS plugin

304 popular plugins (10,000+ downloads) are not listed for QGIS 4 and have had no release in at least 2 years. Each week we highlight one that many people still depend on.

Porting candidates
304
Combined downloads
14.1M
Median since last release
5.5 years

Porting candidates, not abandoned plugins. Difficulty badges are automatic estimates from a scan of each plugin’s code, and repository data can’t show whether a maintainer has moved on. Before you start, check the plugin’s existing issues and contact the maintainer, since many welcome co-maintainers and pull requests. Then follow the official QGIS porting guide.

This week’s porting candidate

More porting candidates

303 more

Port difficulty
Sort

How candidates are chosen

“I need this ported” records an anonymous upvote stored in Cloudflare D1 with a signed browser cookie to stop repeat votes (no account or email required). “Offer to port” opens a prefilled issue on the plugin’s GitHub, GitLab or Gitea tracker for you to review before posting, or the plugin’s own tracker elsewhere. Nothing is posted for you, and GIS Plugins does not track who is porting what.

How difficulty is estimated

Each badge is an automatic estimate. The candidate’s current release is downloaded from plugins.qgis.org and its code is scanned without being run. Points are added once per category:

Easy is 0–3 points, Medium 4–7 and Hard 8 or more. Not assessed means the release has not been scanned yet, the download failed, the ZIP is over 25 MiB (200 MiB unpacked) or unsafe, or its code could not be parsed. Unscanned plugins are never shown as Easy.

API rules (version 2026-10)
  • Removed: QRegExp (use QRegularExpression) source
  • Removed: QDesktopWidget (use QScreen) source
  • Removed: QMatrix (use QTransform) source
  • Removed: qApp (use QApplication.instance()) source
  • Removed: The PyQt Qt module source
  • Removed: Qt.MidButton, Qt.TextColorRole, Qt.BackgroundColorRole, QPainter.HighQualityAntialiasing source
  • Removed: activated[str]-style signal overloads source
  • Removed: QFontMetrics.width() (use horizontalAdvance()) source
  • Removed: QGIS 2 APIs (QgsMapLayerRegistry, legendInterface, QgsMessageLog.INFO) source
  • Deprecated: QVariant.Int-style type constants (QGIS 4 shims them; use QMetaType.Type) source
  • Deprecated: Compiled Qt resources (PyQt6 has no pyrcc) source
  • Deprecated: QgsWkbTypes enums (use Qgis.WkbType and Qgis.GeometryType) source
  • Deprecated: QgsMapLayer.VectorLayer-style layer types (use Qgis.LayerType) source
  • Deprecated: QgsProcessing.Type* source types (use Qgis.ProcessingSourceType) source
  • Deprecated: QgsVectorFileWriter.writeAsVectorFormat/V2 (use writeAsVectorFormatV3) source
  • Deprecated: QgsCoordinateReferenceSystem(int) (use fromEpsgId or "EPSG:n") source
  • Deprecated: QgsCoordinateTransform(source, destination) without a transform context source
  • Deprecated: QVariant() as NULL (use qgis.core.NULL) source

An estimate from code patterns, not a review: it can miss work and overcount easy fixes. Read the code and talk to the maintainer before you commit to a port.