The Solidity documentation publishes a list of known compiler bugs in two JSON files. This page shows data from both files as they were on 2026-10-11. Enter a compiler version to see the bugs that the list names for it. Below the lookup you find a table of all released versions in the file and a table of all bug entries.
On this page Version lookup Docs quotes All versions All bugs Limits
| File | Last commit | Commit date | Records |
|---|---|---|---|
| bugs.json | 9833e8bd | 2026-09-23 | 66 bug entries |
| bugs_by_version.json | d92b6b1f | 2026-09-09 | 121 versions |
Source: bugs.json and bugs_by_version.json at the named commits, fetched 2026-10-11.
Enter a released version as three numbers, for example 0.8.19. The bug names for a version come from bugs_by_version.json. The details of each bug come from bugs.json. For each listed bug the result shows the name, the severity, the official summary, the introduced and fixed versions, the conditions and the official link.
Source: bugs_by_version.json and bugs.json, fetched 2026-10-11.
A listed bug applies only under its conditions. The list is about the compiler version. It does not say that a contract compiled with that version has the bug.
The quotes in this table are copied from the docs page "List of Known Bugs" as it was on 2026-10-11. On that date the title of the docs page named the build "Solidity 0.8.38-develop". This name is the label of the docs build. The newest version in bugs_by_version.json is 0.8.37.
| Topic or field | Quote |
|---|---|
| Content of the list | "Below, you can find a JSON-formatted list of some of the known security-relevant bugs in the Solidity compiler." |
| Start of the list | "The list stretches back as far as version 0.3.0, bugs known to be present only in versions preceding that are not listed." |
| Lookup by version | "There is another file called bugs_by_version.json, which can be used to check which bugs affect a specific version of the compiler." |
| Nightly versions | "It is mildly suspicious if a contract was compiled with a nightly compiler version instead of a released version. This list does not keep track of unreleased or nightly versions." |
| severity | "Severity of the bug: very low, low, medium, high. Takes into account discoverability in contract tests, likelihood of occurrence and potential damage by exploits." |
| conditions | "Conditions that have to be met to trigger the bug. The following keys can be used: optimizer, Boolean value which means that the optimizer has to be switched on to enable the bug. evmVersion, a string that indicates which EVM version compiler settings trigger the bug. The string can contain comparison operators. For example, ">=constantinople" means that the bug is present when the EVM version is set to constantinople or later. If no conditions are given, assume that the bug is present." |
| introduced | "The first published compiler version that contained the bug, optional" |
| fixed | "The first published compiler version that did not contain the bug anymore" |
| check | "This field contains different checks that report whether the smart contract contains the bug or not." |
Source: Solidity docs, List of Known Bugs, fetched 2026-10-11.
The two files show four more facts on 2026-10-11.
The docs sentence gives 0.3.0 as the start of the list. The file bugs_by_version.json also holds 11 versions below 0.3.0, from 0.1.0 to 0.2.2. For each of them it lists the entry AncientCompiler. The summary of that entry in bugs.json is "This compiler version is ancient and might contain several undocumented or undiscovered bugs."
The docs page names four severity values. The file bugs.json uses six values. They are high (3 entries), medium/high (4), medium (12), low/medium (3), low (23) and very low (21).
The docs page explains the condition keys optimizer and evmVersion. The file bugs.json also uses the keys ABIEncoderV2, yulOptimizer and viaIR. The docs page does not explain these three keys. This page shows each key and its value as the file has them.
17 of the 66 entries have no introduced value. The file bugs_by_version.json lists each of these 17 entries for 0.1.0, the oldest version in the file. The fixed version is the first version without the bug, so a bug is not listed for its fixed version.
This table has all 121 versions of bugs_by_version.json, ordered by version number with the highest number first. The release date is the released value of the file. The count is the number of bug names that the file lists for the version. Version 0.3.0 has the highest count, 25. Version 0.8.37 is the newest version in the file and has a count of 0.
A count of 0 means that the list named no bug for that version on 2026-10-11. It does not mean that the version has no bugs. The docs page says that the list holds "some of the known security-relevant bugs".
| Version | Released | Listed bugs |
|---|---|---|
| 0.8.37 | 2026-09-10 | 0 |
| 0.8.36 | 2026-07-09 | 3 |
| 0.8.35 | 2026-04-29 | 5 |
| 0.8.34 | 2026-02-18 | 5 |
| 0.8.33 | 2025-12-18 | 6 |
| 0.8.32 | 2025-12-18 | 6 |
| 0.8.31 | 2025-12-03 | 7 |
| 0.8.30 | 2025-05-07 | 7 |
| 0.8.29 | 2025-03-12 | 7 |
| 0.8.28 | 2024-10-09 | 6 |
| 0.8.27 | 2024-09-04 | 5 |
| 0.8.26 | 2024-05-21 | 5 |
| 0.8.25 | 2024-03-14 | 4 |
| 0.8.24 | 2024-01-25 | 4 |
| 0.8.23 | 2023-11-08 | 4 |
| 0.8.22 | 2023-10-25 | 5 |
| 0.8.21 | 2023-07-19 | 5 |
| 0.8.20 | 2023-05-10 | 7 |
| 0.8.19 | 2023-02-22 | 7 |
| 0.8.18 | 2023-02-01 | 7 |
| 0.8.17 | 2022-09-08 | 7 |
| 0.8.16 | 2022-08-08 | 8 |
| 0.8.15 | 2022-06-15 | 9 |
| 0.8.14 | 2022-05-17 | 11 |
| 0.8.13 | 2022-03-16 | 13 |
| 0.8.12 | 2022-02-16 | 12 |
| 0.8.11 | 2021-12-20 | 12 |
| 0.8.10 | 2021-11-09 | 11 |
| 0.8.9 | 2021-09-29 | 11 |
| 0.8.8 | 2021-09-27 | 13 |
| 0.8.7 | 2021-08-11 | 12 |
| 0.8.6 | 2021-06-22 | 12 |
| 0.8.5 | 2021-06-10 | 12 |
| 0.8.4 | 2021-04-21 | 11 |
| 0.8.3 | 2021-03-23 | 12 |
| 0.8.2 | 2021-03-02 | 13 |
| 0.8.1 | 2021-01-27 | 13 |
| 0.8.0 | 2020-12-16 | 13 |
| 0.7.6 | 2020-12-16 | 13 |
| 0.7.5 | 2020-11-18 | 13 |
| 0.7.4 | 2020-10-19 | 13 |
| 0.7.3 | 2020-10-07 | 14 |
| 0.7.2 | 2020-09-28 | 15 |
| 0.7.1 | 2020-09-02 | 14 |
| 0.7.0 | 2020-07-28 | 13 |
| 0.6.12 | 2020-07-22 | 13 |
| 0.6.11 | 2020-07-07 | 13 |
| 0.6.10 | 2020-06-11 | 13 |
| 0.6.9 | 2020-06-04 | 14 |
| 0.6.8 | 2020-05-14 | 12 |
| 0.6.7 | 2020-05-04 | 15 |
| 0.6.6 | 2020-04-09 | 14 |
| 0.6.5 | 2020-04-06 | 15 |
| 0.6.4 | 2020-03-10 | 15 |
| 0.6.3 | 2020-02-18 | 15 |
| 0.6.2 | 2020-01-27 | 15 |
| 0.6.1 | 2020-01-02 | 14 |
| 0.6.0 | 2019-12-17 | 15 |
| 0.5.17 | 2020-03-17 | 13 |
| 0.5.16 | 2020-01-02 | 14 |
| 0.5.15 | 2019-12-17 | 15 |
| 0.5.14 | 2019-12-09 | 16 |
| 0.5.13 | 2019-11-14 | 14 |
| 0.5.12 | 2019-10-01 | 14 |
| 0.5.11 | 2019-08-12 | 14 |
| 0.5.10 | 2019-06-25 | 15 |
| 0.5.9 | 2019-05-28 | 17 |
| 0.5.8 | 2019-04-30 | 18 |
| 0.5.7 | 2019-03-26 | 17 |
| 0.5.6 | 2019-03-13 | 19 |
| 0.5.5 | 2019-03-05 | 19 |
| 0.5.4 | 2019-02-12 | 17 |
| 0.5.3 | 2019-01-22 | 17 |
| 0.5.2 | 2018-12-19 | 17 |
| 0.5.1 | 2018-12-03 | 17 |
| 0.5.0 | 2018-11-13 | 17 |
| 0.4.26 | 2019-04-29 | 14 |
| 0.4.25 | 2018-09-12 | 17 |
| 0.4.24 | 2018-05-16 | 19 |
| 0.4.23 | 2018-04-19 | 19 |
| 0.4.22 | 2018-04-16 | 20 |
| 0.4.21 | 2018-03-07 | 20 |
| 0.4.20 | 2018-02-14 | 20 |
| 0.4.19 | 2017-11-30 | 20 |
| 0.4.18 | 2017-10-18 | 19 |
| 0.4.17 | 2017-09-21 | 20 |
| 0.4.16 | 2017-08-24 | 19 |
| 0.4.15 | 2017-08-08 | 16 |
| 0.4.14 | 2017-07-31 | 17 |
| 0.4.13 | 2017-07-06 | 18 |
| 0.4.12 | 2017-07-03 | 18 |
| 0.4.11 | 2017-05-03 | 19 |
| 0.4.10 | 2017-03-15 | 20 |
| 0.4.9 | 2017-01-31 | 20 |
| 0.4.8 | 2017-01-13 | 20 |
| 0.4.7 | 2016-12-15 | 20 |
| 0.4.6 | 2016-11-22 | 20 |
| 0.4.5 | 2016-11-21 | 21 |
| 0.4.4 | 2016-10-31 | 18 |
| 0.4.3 | 2016-10-25 | 19 |
| 0.4.2 | 2016-09-17 | 20 |
| 0.4.1 | 2016-09-09 | 21 |
| 0.4.0 | 2016-09-08 | 21 |
| 0.3.6 | 2016-08-10 | 21 |
| 0.3.5 | 2016-06-10 | 23 |
| 0.3.4 | 2016-05-31 | 23 |
| 0.3.3 | 2016-05-27 | 23 |
| 0.3.2 | 2016-04-18 | 24 |
| 0.3.1 | 2016-03-31 | 24 |
| 0.3.0 | 2016-03-11 | 25 |
| 0.2.2 | 2016-02-17 | 23 |
| 0.2.1 | 2016-01-30 | 23 |
| 0.2.0 | 2015-12-02 | 23 |
| 0.1.7 | 2015-11-17 | 22 |
| 0.1.6 | 2015-10-16 | 22 |
| 0.1.5 | 2015-10-07 | 20 |
| 0.1.4 | 2015-09-30 | 20 |
| 0.1.3 | 2015-09-25 | 19 |
| 0.1.2 | 2015-08-20 | 19 |
| 0.1.1 | 2015-08-04 | 19 |
| 0.1.0 | 2015-07-10 | 19 |
Source: bugs_by_version.json, fetched 2026-10-11.
This table has all 66 entries of bugs.json. The order is high, medium/high, medium, low/medium, low and very low. Inside one severity the order is the order of the file. The column "Listed for" gives the first and the last version for which bugs_by_version.json lists the bug, and the number of versions. "Not given" means that the entry has no introduced value.
A bug with conditions applies only when its conditions are met. For an entry with no conditions the docs page says "If no conditions are given, assume that the bug is present." To read the official summary of a bug, look up a version in its range.
| Bug name and id | Severity | Introduced | Fixed | Listed for | Conditions | Link |
|---|---|---|---|---|---|---|
TransientStorageClearingHelperCollisionSOL-2026-1 | high | 0.8.28 | 0.8.34 | 0.8.28 to 0.8.33 (6 versions) | viaIR: true, evmVersion: ">=cancun" | post |
HighOrderByteCleanStorageSOL-2016-9 | high | 0.1.6 | 0.4.4 | 0.1.6 to 0.4.3 (16 versions) | none given | post |
AncientCompilerSOL-2016-1 | high | not given | 0.3.0 | 0.1.0 to 0.2.2 (11 versions) | none given | none |
StorageWriteRemovalBeforeConditionalTerminationSOL-2022-7 | medium/high | 0.8.13 | 0.8.17 | 0.8.13 to 0.8.16 (4 versions) | yulOptimizer: true | post |
ExpExponentCleanupSOL-2018-4 | medium/high | not given | 0.4.25 | 0.1.0 to 0.4.24 (43 versions) | none given | post |
CleanBytesHigherOrderBitsSOL-2016-3 | medium/high | not given | 0.3.3 | 0.1.0 to 0.3.2 (14 versions) | none given | none |
ArrayAccessCleanHigherOrderBitsSOL-2016-2 | medium/high | not given | 0.3.1 | 0.1.0 to 0.3.0 (12 versions) | none given | none |
InheritanceOrderReversalOnStorageEndWarningSOL-2026-3 | medium | 0.8.29 | 0.8.36 | 0.8.29 to 0.8.35 (7 versions) | none given | post |
UnsoundSpillInMutualRecursionSOL-2026-2 | medium | 0.7.2 | 0.8.36 | 0.7.2 to 0.8.35 (41 versions) | viaIR: true | post |
AbiReencodingHeadOverflowWithStaticArrayCleanupSOL-2022-6 | medium | 0.5.8 | 0.8.16 | 0.5.8 to 0.8.15 (46 versions) | ABIEncoderV2: true | post |
InlineAssemblyMemorySideEffectsSOL-2022-4 | medium | 0.8.13 | 0.8.15 | 0.8.13 to 0.8.14 (2 versions) | yulOptimizer: true | post |
KeccakCachingSOL-2021-1 | medium | not given | 0.8.3 | 0.1.0 to 0.8.2 (86 versions) | optimizer: true | post |
EmptyByteArrayCopySOL-2020-11 | medium | not given | 0.7.4 | 0.1.0 to 0.7.3 (80 versions) | none given | post |
DynamicArrayCleanupSOL-2020-10 | medium | not given | 0.7.3 | 0.1.0 to 0.7.2 (79 versions) | none given | post |
YulOptimizerRedundantAssignmentBreakContinueSOL-2020-1 | medium | 0.6.0 | 0.6.1 | 0.6.0 (1 version) | yulOptimizer: true | none |
NestedArrayFunctionCallDecoderSOL-2018-2 | medium | 0.1.4 | 0.4.22 | 0.1.4 to 0.4.21 (36 versions) | none given | post |
ECRecoverMalformedInputSOL-2017-3 | medium | not given | 0.4.14 | 0.1.0 to 0.4.13 (32 versions) | none given | none |
OptimizerStateKnowledgeNotResetForJumpdestSOL-2016-10 | medium | 0.4.5 | 0.4.6 | 0.4.5 (1 version) | optimizer: true | none |
OptimizerStaleKnowledgeAboutSHA3SOL-2016-8 | medium | not given | 0.4.3 | 0.1.0 to 0.4.2 (21 versions) | optimizer: true | none |
MemoryByteArrayElementDeleteClearsWholeWordSOL-2026-5 | low/medium | not given | 0.8.37 | 0.1.0 to 0.8.36 (120 versions) | viaIR: false | post |
SpillSlotCollisionAcrossMutualRecursionSOL-2026-4 | low/medium | 0.7.2 | 0.8.37 | 0.7.2 to 0.8.36 (42 versions) | viaIR: true | post |
SignedArrayStorageCopySOL-2019-8 | low/medium | 0.4.7 | 0.5.10 | 0.4.7 to 0.5.9 (30 versions) | none given | post |
LostStorageArrayWriteOnSlotOverflowSOL-2025-1 | low | 0.1.0 | 0.8.32 | 0.1.0 to 0.8.31 (115 versions) | none given | post |
VerbatimInvalidDeduplicationSOL-2023-3 | low | 0.8.5 | 0.8.23 | 0.8.5 to 0.8.22 (18 versions) | none given | post |
FullInlinerNonExpressionSplitArgumentEvaluationOrderSOL-2023-2 | low | 0.6.7 | 0.8.21 | 0.6.7 to 0.8.20 (34 versions) | yulOptimizer: true | post |
MissingSideEffectsOnSelectorAccessSOL-2023-1 | low | 0.6.2 | 0.8.21 | 0.6.2 to 0.8.20 (39 versions) | viaIR: false | post |
DirtyBytesArrayToStorageSOL-2022-5 | low | 0.0.1 | 0.8.15 | 0.1.0 to 0.8.14 (98 versions) | none given | post |
FreeFunctionRedefinitionSOL-2020-9 | low | 0.7.1 | 0.7.2 | 0.7.1 (1 version) | none given | none |
MemoryArrayCreationOverflowSOL-2020-3 | low | 0.2.0 | 0.6.5 | 0.2.0 to 0.6.4 (60 versions) | none given | post |
privateCanBeOverriddenSOL-2020-2 | low | 0.3.0 | 0.5.17 | 0.3.0 to 0.5.16 (51 versions) | none given | none |
YulOptimizerRedundantAssignmentBreakContinue0.5SOL-2020-1 | low | 0.5.8 | 0.5.16 | 0.5.8 to 0.5.15 (8 versions) | yulOptimizer: true | none |
ABIEncoderV2LoopYulOptimizerSOL-2019-10 | low | 0.5.14 | 0.5.15 | 0.5.14 (1 version) | ABIEncoderV2: true, optimizer: true, yulOptimizer: true | none |
ABIEncoderV2CalldataStructsWithStaticallySizedAndDynamicallyEncodedMembersSOL-2019-9 | low | 0.5.6 | 0.5.11 | 0.5.6 to 0.5.10 (5 versions) | ABIEncoderV2: true | none |
ABIEncoderV2StorageArrayWithMultiSlotElementSOL-2019-7 | low | 0.4.16 | 0.5.10 | 0.4.16 to 0.5.9 (21 versions) | ABIEncoderV2: true | post |
ABIEncoderV2PackedStorageSOL-2019-3 | low | 0.5.0 | 0.5.7 | 0.5.0 to 0.5.6 (7 versions) | ABIEncoderV2: true | post |
ABIEncoderV2PackedStorage_0.4.xSOL-2019-3 | low | 0.4.19 | 0.4.26 | 0.4.19 to 0.4.25 (7 versions) | ABIEncoderV2: true | post |
DoubleShiftSizeOverflowSOL-2019-1 | low | 0.5.5 | 0.5.6 | 0.5.5 (1 version) | optimizer: true, evmVersion: ">=constantinople" | post |
DelegateCallReturnValueSOL-2017-4 | low | 0.3.0 | 0.4.15 | 0.3.0 to 0.4.14 (22 versions) | none given | none |
SkipEmptyStringLiteralSOL-2017-2 | low | not given | 0.4.12 | 0.1.0 to 0.4.11 (30 versions) | none given | none |
ConstantOptimizerSubtractionSOL-2017-1 | low | not given | 0.4.11 | 0.1.0 to 0.4.10 (29 versions) | optimizer: true | post |
IdentityPrecompileReturnIgnoredSOL-2016-11 | low | not given | 0.4.7 | 0.1.0 to 0.4.6 (25 versions) | none given | none |
LibrariesNotCallableFromPayableFunctionsSOL-2016-7 | low | 0.4.0 | 0.4.2 | 0.4.0 to 0.4.1 (2 versions) | none given | none |
SendFailsForZeroEtherSOL-2016-6 | low | not given | 0.4.0 | 0.1.0 to 0.3.6 (18 versions) | none given | none |
DynamicAllocationInfiniteLoopSOL-2016-5 | low | not given | 0.3.6 | 0.1.0 to 0.3.5 (17 versions) | none given | none |
OptimizerClearStateOnCodePathJoinSOL-2016-4 | low | not given | 0.3.6 | 0.1.0 to 0.3.5 (17 versions) | optimizer: true | none |
MisorderedNamedParametersInRequireWithCustomErrorsSOL-2026-6 | very low | 0.8.26 | 0.8.37 | 0.8.26 to 0.8.36 (11 versions) | viaIR: true | post |
DataLocationChangeInInternalOverrideSOL-2022-3 | very low | 0.6.9 | 0.8.14 | 0.6.9 to 0.8.13 (25 versions) | none given | post |
NestedCalldataArrayAbiReencodingSizeValidationSOL-2022-2 | very low | 0.5.8 | 0.8.14 | 0.5.8 to 0.8.13 (44 versions) | none given | post |
AbiEncodeCallLiteralAsFixedBytesBugSOL-2022-1 | very low | 0.8.11 | 0.8.13 | 0.8.11 to 0.8.12 (2 versions) | none given | post |
UserDefinedValueTypesBugSOL-2021-4 | very low | 0.8.8 | 0.8.9 | 0.8.8 (1 version) | none given | post |
SignedImmutablesSOL-2021-3 | very low | 0.6.5 | 0.8.9 | 0.6.5 to 0.8.8 (24 versions) | none given | post |
ABIDecodeTwoDimensionalArrayMemorySOL-2021-2 | very low | 0.4.16 | 0.8.4 | 0.4.16 to 0.8.3 (53 versions) | ABIEncoderV2: true | post |
UsingForCalldataSOL-2020-8 | very low | 0.6.9 | 0.6.10 | 0.6.9 (1 version) | none given | none |
MissingEscapingInFormattingSOL-2020-7 | very low | 0.5.14 | 0.6.8 | 0.5.14 to 0.6.7 (12 versions) | ABIEncoderV2: true | none |
ArraySliceDynamicallyEncodedBaseTypeSOL-2020-6 | very low | 0.6.0 | 0.6.8 | 0.6.0 to 0.6.7 (8 versions) | ABIEncoderV2: true | none |
ImplicitConstructorCallvalueCheckSOL-2020-5 | very low | 0.4.5 | 0.6.8 | 0.4.5 to 0.6.7 (48 versions) | none given | none |
TupleAssignmentMultiStackSlotComponentsSOL-2020-4 | very low | 0.1.6 | 0.6.6 | 0.1.6 to 0.6.5 (63 versions) | none given | none |
DynamicConstructorArgumentsClippedABIV2SOL-2019-6 | very low | 0.4.16 | 0.5.9 | 0.4.16 to 0.5.8 (20 versions) | ABIEncoderV2: true | none |
UninitializedFunctionPointerInConstructorSOL-2019-5 | very low | 0.5.0 | 0.5.8 | 0.5.0 to 0.5.7 (8 versions) | none given | none |
UninitializedFunctionPointerInConstructor_0.4.xSOL-2019-5 | very low | 0.4.5 | 0.4.26 | 0.4.5 to 0.4.25 (21 versions) | none given | none |
IncorrectEventSignatureInLibrariesSOL-2019-4 | very low | 0.5.0 | 0.5.8 | 0.5.0 to 0.5.7 (8 versions) | none given | none |
IncorrectEventSignatureInLibraries_0.4.xSOL-2019-4 | very low | 0.3.0 | 0.4.26 | 0.3.0 to 0.4.25 (33 versions) | none given | none |
IncorrectByteInstructionOptimizationSOL-2019-2 | very low | 0.5.5 | 0.5.7 | 0.5.5 to 0.5.6 (2 versions) | optimizer: true | post |
EventStructWrongDataSOL-2018-3 | very low | 0.4.17 | 0.4.25 | 0.4.17 to 0.4.24 (8 versions) | none given | post |
OneOfTwoConstructorsSkippedSOL-2018-1 | very low | 0.4.22 | 0.4.23 | 0.4.22 (1 version) | none given | none |
ZeroFunctionSelectorSOL-2017-5 | very low | not given | 0.4.18 | 0.1.0 to 0.4.17 (36 versions) | none given | none |
Source: bugs.json and bugs_by_version.json, fetched 2026-10-11.
This page does not test contracts. It shows the entries that the official list names for a compiler version. A compiler version on the list is not proof that a contract has the bug. The docs page describes separate checks "that report whether the smart contract contains the bug or not".
The lookup gives a result only for the 121 versions in the file. For a version that is not in the file it shows a message and no count. Nightly and prerelease builds get no result, because the list does not track them.
The release dates, the counts and the bug data are copies of values in the two files. This page does not show the description and check values of bugs.json. Both files can change after 2026-10-11.
Both files were fetched from raw.githubusercontent.com on 2026-10-11 at the commits named near the top. A script wrote the two tables and the lookup data from the files. No value in these two tables was typed by hand.
A separate check applied one rule to bugs.json. A version has a bug when the entry has no introduced value or the version is at or above introduced, and the version is below fixed. The check compared each version as three whole numbers, so that 0.8.9 is below 0.8.10. For all 121 versions the rule gave the same bug names as bugs_by_version.json.
The data was fetched on 2026-10-11 and can change after that date. This page copies public data. It is not security advice and it is not an audit of any contract.