AI Slop Code RIsk Monitor

microsoft/markitdown

Python tool for converting files and office documents to Markdown.

41.4 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for microsoft/markitdown, a Python project with 189,376 GitHub stars. SynthScan examined 26,539 lines of code across 124 source files, recording 727 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 41.4 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

41.4
Adjusted Signal
41.4
Raw Pattern Score
100%
Time Factor
2026-10-04
Last Push
189.4K
Stars
Python
Language
26.5K
Lines of Code
124
Files
727
Pattern Hits
2026-10-12
Scan Date
0.21
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 63.5/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 511 finding(s).

Hallucinated Dependency & Supply Chain Risk 11.3/100 · LOW

Are imports declared and package/API names verified? 56 finding(s).

Agent Over-Engineering Ratio 81.3/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 586 finding(s).

PR Review Velocity Impact 87.2/100 · CRITICAL

Which changes need focused human review? 727 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 25MEDIUM 116LOW 585

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 727 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers426 hits · 389 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/tests/test_youtube.py30def test_youtube_empty_extraction_preserves_html(CODE
LOWpackages/markitdown/tests/test_youtube.py122def test_youtube_preserves_metadata_output(CODE
LOWpackages/markitdown/tests/test_youtube.py141def test_youtube_preserves_library_transcript(CODE
LOWpackages/markitdown/tests/test_youtube.py188def test_youtube_converter_extracts_supported_video_ids(CODE
LOWpackages/markitdown/tests/test_youtube.py203def test_youtube_converter_accepts_supported_url_formats(url: str) -> None:CODE
LOWpackages/markitdown/tests/test_youtube.py211def test_youtube_converter_missing_title_metadata() -> None:CODE
LOWpackages/markitdown/tests/test_module_vectors.py72def test_convert_stream_with_hints(test_vector):CODE
LOWpackages/markitdown/tests/test_module_vectors.py93def test_convert_stream_without_hints(test_vector):CODE
LOWpackages/markitdown/tests/test_module_vectors.py163def test_convert_keep_data_uris(test_vector):CODE
LOWpackages/markitdown/tests/test_module_vectors.py181def test_convert_stream_keep_data_uris(test_vector):CODE
LOW⚡packages/markitdown/tests/test_docx.py239def test_arrow_accents_are_consistent() -> None:CODE
LOW⚡packages/markitdown/tests/test_docx.py246def test_math_italic_latin_alphabet_is_complete() -> None:CODE
LOW⚡packages/markitdown/tests/test_docx.py253def test_math_italic_expression_is_fully_normalized() -> None:CODE
LOW⚡packages/markitdown/tests/test_docx.py277def test_run_without_text_child_does_not_crash():CODE
LOW⚡packages/markitdown/tests/test_docx.py285def test_run_with_text_still_converts():CODE
LOW⚡packages/markitdown/tests/test_docx.py291def test_subscript_with_missing_text_run_does_not_crash():CODE
LOWpackages/markitdown/tests/test_docx.py56def test_omml_unknown_function_fallback():CODE
LOWpackages/markitdown/tests/test_docx.py70def test_omml_function_name_split_across_runs():CODE
LOWpackages/markitdown/tests/test_docx.py86def test_omml_known_function_split_across_runs():CODE
LOWpackages/markitdown/tests/test_docx.py141def test_accent_templates_are_formattable() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py164def test_caron_and_ring_accents() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py170def test_unmodified_accent_still_converts() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py316def test_docx_styles_with_redundant_default_namespace(CODE
LOWpackages/markitdown/tests/test_docx.py381def test_valid_styles_are_returned_unchanged(styles_xml: bytes) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py385def test_missing_type_repair_preserves_namespaces(styles_xml: bytes) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py402def test_styles_without_ids_are_removed(styles_xml: bytes) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py413def test_style_strike_repair_preserves_namespaces(CODE
LOWpackages/markitdown/tests/test_docx.py441def test_other_namespace_dstrike_is_unchanged(styles_xml: bytes) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py548def test_image_hook_does_not_change_public_conversion_signature() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py560def test_inherited_hook_receives_images_and_options_in_order(CODE
LOWpackages/markitdown/tests/test_docx.py622def test_declining_hook_preserves_native_output(CODE
LOWpackages/markitdown/tests/test_docx.py642def test_native_converter_does_not_add_image_processing(CODE
LOWpackages/markitdown/tests/test_docx.py657def test_override_can_delegate_to_super() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py704def test_fragment_placement_precedes_shared_html_conversion(CODE
LOWpackages/markitdown/tests/test_docx.py732def test_standalone_block_image_does_not_leave_empty_wrappers(CODE
LOWpackages/markitdown/tests/test_docx.py744def test_block_image_keeps_its_table_cell(CODE
LOWpackages/markitdown/tests/test_docx.py778def test_nested_run_formatting_is_preserved_around_blocks(CODE
LOWpackages/markitdown/tests/test_docx.py793def test_hook_inherits_preprocessing_and_style_precedence() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py812def test_multiple_images_and_native_fallback_keep_their_own_positions() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py826def test_many_images_have_independent_replacements() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py837def test_returned_image_and_literal_text_use_normal_html_rendering() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py854def test_invalid_return_is_not_silent_native_fallback(result: Any) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py868def test_full_document_is_not_a_valid_fragment(fragment: str) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py874def test_hook_errors_propagate_and_close_the_image_stream(via_dispatcher: bool) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py900def test_dispatcher_can_fall_back_to_native_docx_after_hook_error() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py911def test_mammoth_does_not_swallow_hook_file_reference_errors() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py922def test_per_call_options_and_fragments_do_not_leak_between_conversions() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py933def test_unreferenced_media_does_not_invoke_the_hook() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py951def test_image_html_does_not_create_nested_links(CODE
LOWpackages/markitdown/tests/test_docx.py980def test_declining_hook_preserves_a_real_document(keep_data_uris: bool) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py996def test_hook_reads_images_from_the_preprocessed_archive() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1021def test_missing_dependencies_fail_before_invoking_hook(CODE
LOWpackages/markitdown/tests/test_docx.py1123def test_docx_underlined_text_is_preserved(tmp_path) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1140def test_docx_underlined_whitespace_is_preserved(CODE
LOWpackages/markitdown/tests/test_docx.py1155def test_docx_embedded_style_map_overrides_underline_default(tmp_path) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1168def test_docx_caller_style_map_overrides_embedded_style_map(tmp_path) -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1192def test_docx_zip_filename_casing_mismatch() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1258def test_docx_zip_filename_non_casing_mismatch_still_rejected() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1320def test_docx_malformed_equations() -> None:CODE
LOWpackages/markitdown/tests/test_docx.py1457def test_convert_docx_with_style_missing_type(tmp_path):CODE
366 more matches not shown…
Decorative Section Separators96 hits · 354 pts
SeverityFileLineSnippetContext
MEDIUM⚡packages/markitdown/tests/test_image.py206# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_image.py211# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py117# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py119# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py163# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py165# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py196# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py198# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py307# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py309# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py535# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py537# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py614# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py616# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py715# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py717# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py742# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py744# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py784# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cu.py786# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py28# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py30# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py50# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py52# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py639# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu.py641# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cli_misc.py69# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown/tests/test_cli_misc.py71# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cli_misc.py293# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cli_misc.py295# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py50# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py52# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py335# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py337# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py436# ---------------------------------------------------------------------------COMMENT
MEDIUM…/markitdown/src/markitdown/converters/_cu_converter.py438# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py105# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py107# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py168# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py170# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py330# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_docx_converter.py332# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py57# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py59# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py72# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py74# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py89# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py91# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py122# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py124# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py149# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py151# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py234# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py236# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_pptx_converter.py65# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_pptx_converter.py67# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_pptx_converter.py76# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡packages/markitdown-ocr/tests/test_pptx_converter.py78# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py92# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py94# ---------------------------------------------------------------------------COMMENT
36 more matches not shown…
Empty Error Handlers20 hits · 100 pts
SeverityFileLineSnippetContext
HIGHpackages/markitdown/src/markitdown/_markitdown.py94except UnicodeDecodeError:CODE
HIGHpackages/markitdown/src/markitdown/_markitdown.py659except NotImplementedError:CODE
HIGH…wn/src/markitdown/converters/_outlook_msg_converter.py120except Exception as e:CODE
HIGH…wn/src/markitdown/converters/_outlook_msg_converter.py347except Exception:CODE
HIGH…wn/src/markitdown/converters/_outlook_msg_converter.py292except (UnicodeDecodeError, LookupError):CODE
HIGH…rkitdown/src/markitdown/converters/_audio_converter.py102except MissingDependencyException:CODE
HIGH…markitdown/src/markitdown/converters/_rss_converter.py123except BaseException as _:CODE
HIGH…down/src/markitdown/converters/_bing_serp_converter.py102except UnicodeDecodeError:CODE
HIGH…down/src/markitdown/converters/_bing_serp_converter.py104except binascii.Error:CODE
HIGH…arkitdown/src/markitdown/converters/_pptx_converter.py217except Exception:CODE
HIGH…arkitdown/src/markitdown/converters/_pptx_converter.py254except Exception:CODE
HIGH…arkitdown/src/markitdown/converters/_pptx_converter.py269except Exception:CODE
HIGH…arkitdown/src/markitdown/converters/_pptx_converter.py278except Exception:CODE
HIGH…arkitdown/src/markitdown/converters/_pptx_converter.py193except Exception:CODE
HIGH…markitdown/src/markitdown/converters/_zip_converter.py125except UnsupportedFormatException:CODE
HIGH…markitdown/src/markitdown/converters/_zip_converter.py127except FileConversionException:CODE
HIGH…own/src/markitdown/converter_utils/docx/pre_process.py286except Exception:CODE
HIGH…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py123except Exception:CODE
HIGH…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py332except Exception:CODE
HIGH…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py83except Exception:CODE
Unused Imports54 hits · 52 pts
SeverityFileLineSnippetContext
LOW…sample-plugin/src/markitdown_sample_plugin/__init__.py5CODE
LOW…sample-plugin/src/markitdown_sample_plugin/__init__.py5CODE
LOW…sample-plugin/src/markitdown_sample_plugin/__init__.py5CODE
LOW…sample-plugin/src/markitdown_sample_plugin/__init__.py6CODE
LOWpackages/markitdown/src/markitdown/__init__.py5CODE
LOWpackages/markitdown/src/markitdown/__init__.py6CODE
LOWpackages/markitdown/src/markitdown/__init__.py6CODE
LOWpackages/markitdown/src/markitdown/__init__.py6CODE
LOWpackages/markitdown/src/markitdown/__init__.py11CODE
LOWpackages/markitdown/src/markitdown/__init__.py11CODE
LOWpackages/markitdown/src/markitdown/__init__.py12CODE
LOWpackages/markitdown/src/markitdown/__init__.py13CODE
LOWpackages/markitdown/src/markitdown/__init__.py13CODE
LOWpackages/markitdown/src/markitdown/__init__.py13CODE
LOWpackages/markitdown/src/markitdown/__init__.py13CODE
LOWpackages/markitdown/src/markitdown/__init__.py13CODE
LOW…arkitdown/src/markitdown/converters/_xlsx_converter.py17CODE
LOW…arkitdown/src/markitdown/converters/_xlsx_converter.py24CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py5CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py6CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py7CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py8CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py9CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py10CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py11CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py12CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py13CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py14CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py14CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py15CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py16CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py17CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py18CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py19CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py20CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py20CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py24CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py24CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py28CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py29CODE
LOW…arkitdown/src/markitdown/converters/_docx_converter.py2CODE
LOW…arkitdown/src/markitdown/converters/_docx_converter.py3CODE
LOW…markitdown/src/markitdown/converters/_zip_converter.py13CODE
LOW…src/markitdown/converter_utils/docx/math/latex_dict.py8CODE
LOWpackages/markitdown-mcp/src/markitdown_mcp/__init__.py5CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py10CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py10CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py11CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py12CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py12CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py16CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py17CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py18CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py19CODE
Excessive Try-Catch Wrapping38 hits · 41 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/src/markitdown/_markitdown.py126 except Exception:CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py315 except Exception:CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py671 except Exception:CODE
LOW…rkitdown/src/markitdown/converters/_image_converter.py112 except Exception as e:CODE
LOW…s/markitdown/src/markitdown/converters/_llm_caption.py24 except Exception as e:CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py120 except Exception as e:CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py214 except Exception:CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py278 except Exception:CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py347 except Exception:CODE
LOW…markitdown/src/markitdown/converters/_pdf_converter.py576 except Exception:CODE
LOW…/markitdown/src/markitdown/converters/_cu_converter.py421 except Exception as exc:CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py134 except Exception as e:CODE
MEDIUM…itdown/src/markitdown/converters/_youtube_converter.py135 print(f"Error extracting description: {e}")CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py193 except Exception as e:CODE
MEDIUM…itdown/src/markitdown/converters/_youtube_converter.py196 print(f"Error fetching transcript: {e}")CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py250 except Exception as e:CODE
LOW…rkitdown/src/markitdown/converters/_ipynb_converter.py100 except Exception as e:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py193 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py217 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py254 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py269 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py278 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py294 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py362 except Exception:CODE
MEDIUM…arkitdown/src/markitdown/converters/_pptx_converter.py325def _convert_chart_to_markdown(self, chart):CODE
LOW…own/src/markitdown/converter_utils/docx/pre_process.py286 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py83 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py120 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py123 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py297 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py302 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py332 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py380 except Exception as e:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py386 except Exception:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py413 except Exception as e:CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py419 except Exception:CODE
LOW…ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py79 except Exception:CODE
LOW…ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py108 except Exception as e:CODE
Deep Nesting38 hits · 36 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/tests/test_docx.py316CODE
LOWpackages/markitdown/tests/test_docx.py1457CODE
LOWpackages/markitdown/tests/test_xlsx.py344CODE
LOWpackages/markitdown/tests/test_xlsx.py473CODE
LOW…down/tests/test_files/generate_pdf_cleanup_fixtures.py15CODE
LOWpackages/markitdown/src/markitdown/_exceptions.py58CODE
LOWpackages/markitdown/src/markitdown/__main__.py16CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py188CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py322CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py529CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py602CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py737CODE
LOW…down/src/markitdown/converters/_doc_intel_converter.py71CODE
LOW…down/src/markitdown/converters/_doc_intel_converter.py104CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py327CODE
LOW…arkitdown/src/markitdown/converters/_xlsx_converter.py74CODE
LOW…arkitdown/src/markitdown/converters/_xlsx_converter.py123CODE
LOW…markitdown/src/markitdown/converters/_pdf_converter.py120CODE
LOW…markitdown/src/markitdown/converters/_pdf_converter.py398CODE
LOW…markitdown/src/markitdown/converters/_pdf_converter.py520CODE
LOW…/markitdown/src/markitdown/converters/_cu_converter.py251CODE
LOW…markitdown/src/markitdown/converters/_rss_converter.py442CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py89CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py229CODE
LOW…down/src/markitdown/converters/_bing_serp_converter.py57CODE
LOW…rkitdown/src/markitdown/converters/_ipynb_converter.py64CODE
LOW…arkitdown/src/markitdown/converters/_epub_converter.py55CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py61CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py92CODE
LOW…markitdown/src/markitdown/converters/_zip_converter.py87CODE
LOW…kitdown/src/markitdown/converter_utils/_xlsx_images.py45CODE
LOW…kitdown/src/markitdown/converter_utils/docx/_images.py85CODE
LOW…own/src/markitdown/converter_utils/docx/pre_process.py250CODE
LOWpackages/markitdown-ocr/tests/test_docx_converter.py186CODE
LOWpackages/markitdown-ocr/tests/test_xlsx_inheritance.py255CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py28CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py158CODE
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py340CODE
AI Slop Vocabulary10 hits · 26 pts
SeverityFileLineSnippetContext
MEDIUM…ckages/markitdown/tests/test_files/test_wikipedia.html936</p><p>In 1990, Microsoft introduced the <a href="/wiki/Microsoft_Office" title="Microsoft Office">Microsoft Office</a> CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUMpackages/markitdown/tests/test_files/test_serp.html17var logJSText=function(n,t){t===void 0&&(t=null);(new Image).src=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{"T":"CI.ClientICODE
LOWpackages/markitdown/src/markitdown/_markitdown.py831 # There were no other guesses, so just add the base guessCOMMENT
Redundant / Tautological Comments15 hits · 22 pts
SeverityFileLineSnippetContext
LOW…-sample-plugin/src/markitdown_sample_plugin/_plugin.py63 # Read the file stream into a str using the provided charset encoding, or using the system defaultCOMMENT
LOW…-sample-plugin/src/markitdown_sample_plugin/_plugin.py67 # Return the resultCOMMENT
LOWpackages/markitdown/tests/test_pdf.py1092 # Check if line contains ONLY a partial numbering (with possible whitespace/pipes)COMMENT
LOWpackages/markitdown/src/markitdown/_markitdown.py435 # Check if we have a seekable stream. If not, load the entire stream into memory.COMMENT
LOWpackages/markitdown/src/markitdown/_markitdown.py655 # Check if the converter will accept the file, and if so, try to convert itCOMMENT
LOW…rkitdown/src/markitdown/converters/_audio_converter.py105 # Return the resultCOMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py37 # Check if this line is ONLY a partial numberingCOMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py296 # Check if enough rows are table rows (at least 20%)COMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py328 # Check if this row starts a table regionCOMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py383 # Check if we're inside a table region (not at start)COMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py448 # Assign words to columnsCOMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py477 # Check if cells contain short, structured data (not long text)COMMENT
LOW…markitdown/src/markitdown/converters/_pdf_converter.py539 # Read file stream into BytesIO for compatibility with pdfplumberCOMMENT
LOW…markitdown/src/markitdown/converters/_csv_converter.py86 # Read the file contentCOMMENT
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py94 # Check if dimensions are validCOMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGH⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
HIGH⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpackages/markitdown/src/markitdown/_base_converter.py51 Return a quick determination on if the converter should attempt converting the document. This is primarSTRING
HIGHpackages/markitdown/src/markitdown/_base_converter.py90 Convert a document to Markdown text. Parameters: - file_stream: The file-like object to converSTRING
HIGH…/markitdown/src/markitdown/converters/_cu_converter.py397Resolve analyzer modality from cache or via get_analyzer() fallback. For known prebuilt-* names, returns the modaliSTRING
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMpackages/markitdown/tests/test_cli_misc.py19# This file contains CLI tests that are not directly tested by the FileTestVectors.COMMENT
MEDIUMpackages/markitdown/src/markitdown/_markitdown.py571 # Create an initial guess from all this informationCOMMENT
MEDIUMpackages/markitdown/src/markitdown/_markitdown.py610 # Create a copy of the page_converters list, sorted by priority.COMMENT
MEDIUM…own/src/markitdown/converter_utils/docx/pre_process.py88 # Create a new paragraph tagCOMMENT
Modern AI Meta-Vocabulary4 hits · 11 pts
SeverityFileLineSnippetContext
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUM⚡packages/markitdown/tests/test_files/test_rss.xml1<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ns0="http://www.w3.org/2005/Atom" xmlns:ns1="http://purl.org/rss/CODE
MEDIUMpackages/markitdown/tests/test_files/test_blog.html20<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICAL…arkitdown/src/markitdown/converters/_pptx_converter.py216 alt_text = shape._element._nvXxPr.cNvPr.attrib.get("descr", "")CODE
Over-Commented Block9 hits · 8 pts
SeverityFileLineSnippetContext
LOW.devcontainer/devcontainer.json21 // Use 'forwardPorts' to make a list of ports inside the container available locally.COMMENT
LOWpackages/markitdown-sample-plugin/tests/__init__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
LOW…ample-plugin/src/markitdown_sample_plugin/__about__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
LOWpackages/markitdown/tests/test_docx.py101COMMENT
LOWpackages/markitdown/tests/test_docx.py181# ``CHR`` maps a combining accent to a LaTeX template. U+20EE COMBINING LEFTCOMMENT
LOWpackages/markitdown/tests/__init__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
LOWpackages/markitdown/src/markitdown/__about__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
LOWpackages/markitdown-mcp/tests/__init__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
LOWpackages/markitdown-mcp/src/markitdown_mcp/__about__.py1# SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com>COMMENT
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOW…sample-plugin/src/markitdown_sample_plugin/__init__.py8__all__ = [CODE
LOWpackages/markitdown/src/markitdown/__init__.py21__all__ = [CODE
LOW…kages/markitdown/src/markitdown/converters/__init__.py31__all__ = [CODE
LOWpackages/markitdown-mcp/src/markitdown_mcp/__init__.py7__all__ = [CODE
LOWpackages/markitdown-mcp/src/markitdown_mcp/__main__.py13logger = logging.getLogger(__name__)CODE
LOWpackages/markitdown-ocr/src/markitdown_ocr/__init__.py21__all__ = [CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/src/markitdown/_markitdown.py751 "placeholder" + base_guess.extension, strict=FalseCODE