Repository Analysis

microsoft/markitdown

Python tool for converting files and office documents to Markdown.

40.9 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of microsoft/markitdown, a Python project with 165,621 GitHub stars. SynthScan v2.0 examined 17,007 lines of code across 100 source files, recording 389 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 40.9 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

40.9
Adjusted Score
40.9
Raw Score
100%
Time Factor
2026-06-24
Last Push
165.6K
Stars
Python
Language
17.0K
Lines of Code
100
Files
389
Pattern Hits
2026-07-14
Scan Date
0.06
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 1HIGH 5MEDIUM 112LOW 271

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 389 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators90 hits · 324 pts
SeverityFileLineSnippetContext
MEDIUMpackages/markitdown/tests/test_cu_converter.py114# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py116# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py160# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py162# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py193# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py195# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py308# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py310# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py558# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py560# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py637# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py639# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py719# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py721# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py746# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py748# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py788# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py790# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py906# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py908# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py47# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py49# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py662# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown/tests/test_cu_converter.py664# ---------------------------------------------------------------------------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
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py103# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py105# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py166# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py168# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py210# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py212# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py55# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py57# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py70# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py72# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py87# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py89# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py122# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py147# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_docx_converter.py149# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py61# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py63# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py75# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py77# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py91# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py93# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py106# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py108# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py121# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py123# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py135# ---------------------------------------------------------------------------COMMENT
MEDIUMpackages/markitdown-ocr/tests/test_pptx_converter.py137# ---------------------------------------------------------------------------COMMENT
30 more matches not shown…
Hyper-Verbose Identifiers115 hits · 103 pts
SeverityFileLineSnippetContext
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
LOWpackages/markitdown/tests/test_pdf_masterformat.py17 def test_partial_numbering_pattern_regex(self):CODE
LOWpackages/markitdown/tests/test_pdf_masterformat.py34 def test_masterformat_partial_numbering_not_split(self):CODE
LOWpackages/markitdown/tests/test_pdf_masterformat.py73 def test_masterformat_content_preserved(self):CODE
LOWpackages/markitdown/tests/test_pdf_masterformat.py115 def test_merge_partial_numbering_with_empty_lines_between(self):CODE
LOWpackages/markitdown/tests/test_pdf_masterformat.py148 def test_multiple_partial_numberings_all_merged(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py86 def test_page_close_called_on_every_page(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py116 def test_plain_text_pdf_falls_back_to_pdfminer(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py150 def test_plain_text_pdf_still_closes_all_pages(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py177 def test_mixed_pdf_uses_form_extraction_per_page(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py222 def test_only_one_pdfplumber_open_call(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py249 def test_real_pdf_page_cleanup(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py303 def test_memory_does_not_grow_linearly(self):CODE
LOWpackages/markitdown/tests/test_pdf_memory.py333 def test_memory_constant_across_page_counts(self):CODE
LOWpackages/markitdown/tests/test_module_misc.py110def test_stream_info_operations() -> None:CODE
LOWpackages/markitdown/tests/test_module_misc.py291def test_deeply_nested_html_fallback() -> None:CODE
LOWpackages/markitdown/tests/test_module_misc.py404def test_speech_transcription() -> None:CODE
LOWpackages/markitdown/tests/test_module_misc.py465def test_markitdown_llm_parameters() -> None:CODE
LOWpackages/markitdown/tests/test_docintel_html.py15def test_docintel_accepts_html_extension():CODE
LOWpackages/markitdown/tests/test_docintel_html.py21def test_docintel_accepts_html_mimetype():CODE
LOWpackages/markitdown/tests/test_cli_vectors.py98def test_input_from_stdin_without_hints(shared_tmp_dir, test_vector) -> None:CODE
LOWpackages/markitdown/tests/test_cli_vectors.py152def test_output_to_file_with_data_uris(shared_tmp_dir, test_vector) -> None:CODE
LOWpackages/markitdown/tests/test_cu_converter.py109 def test_rejects_unsupported_extensions(self, ext):CODE
LOWpackages/markitdown/tests/test_cu_converter.py155 def test_rejects_unsupported_mimetypes(self, mime):CODE
LOWpackages/markitdown/tests/test_cu_converter.py168 def test_restricted_to_pdf_only(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py186 def test_webm_value_matches_cli_input(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py201 def test_detects_video_from_mime_without_extension(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py207 def test_detects_audio_from_mime_without_extension(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py213 def test_detects_audio_alias_from_mime_without_extension(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py219 def test_detects_video_alias_from_mime_without_extension(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py298 def test_file_type_restriction_applies_to_mime(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py316 def test_document_analyzer_routes_pdf_to_custom(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py566 def test_known_document_prebuilts(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py578 def test_known_audio_prebuilts(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py584 def test_known_video_prebuilts(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py590 def test_known_image_prebuilts(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py596 def test_unknown_prebuilt_falls_back_to_get_analyzer(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py618 def test_custom_analyzer_no_base_defaults_to_document(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py628 def test_get_analyzer_failure_raises_value_error(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py702 def test_wav_returns_markdown(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py712 def test_jpeg_returns_markdown(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py727 def test_nonexistent_analyzer_raises_value_error(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py754 def test_cu_registered_before_docintel(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py796 def test_use_cu_without_endpoint_exits(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py914 def test_missing_deps_message(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py94 def test_accepts_supported_extensions(self, ext):CODE
LOWpackages/markitdown/tests/test_cu_converter.py143 def test_accepts_supported_mimetypes(self, mime):CODE
LOWpackages/markitdown/tests/test_cu_converter.py267 def test_content_type_for_resolves_conflicts_to_file_type(CODE
LOWpackages/markitdown/tests/test_cu_converter.py273 def test_conflicting_extension_and_mimetype_in_convert(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py386 def test_no_analyzer_id_uses_auto_routing(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py406 def test_no_analyzer_id_routes_image_to_document_search(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py426 def test_document_analyzer_routes_image_to_custom(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py449 def test_image_analyzer_routes_jpeg_to_custom(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py472 def test_image_analyzer_routes_pdf_to_document_prebuilt(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py504 def test_mime_only_input_uses_auto_routing(self, mimetype, expected_analyzer):CODE
LOWpackages/markitdown/tests/test_cu_converter.py521 def test_mime_alias_input_uses_canonical_content_type(self):CODE
LOWpackages/markitdown/tests/test_cu_converter.py539 def test_extension_only_input_uses_file_type_content_type(self):CODE
55 more matches not shown…
Unused Imports58 hits · 56 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/tests/test_pdf_memory.py26CODE
LOWpackages/markitdown/tests/test_cu_converter.py13CODE
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.py13CODE
LOW…arkitdown/src/markitdown/converters/_xlsx_converter.py20CODE
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…arkitdown/src/markitdown/converters/_pptx_converter.py9CODE
LOW…markitdown/src/markitdown/converters/_zip_converter.py13CODE
LOW…own/src/markitdown/converters/_plain_text_converter.py12CODE
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 Wrapping41 hits · 46 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/src/markitdown/_markitdown.py79 except Exception:CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py268 except Exception:CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py630 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.py66 except Exception as e:CODE
LOW…wn/src/markitdown/converters/_outlook_msg_converter.py147 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.py114 except Exception as e:CODE
MEDIUM…itdown/src/markitdown/converters/_youtube_converter.py115 print(f"Error extracting description: {e}")CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py176 except Exception as e:CODE
MEDIUM…itdown/src/markitdown/converters/_youtube_converter.py179 print(f"Error fetching transcript: {e}")CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py232 except Exception as e:CODE
LOW…rkitdown/src/markitdown/converters/_ipynb_converter.py93 except Exception as e:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py127 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py134 except Exception:CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py262 except Exception:CODE
MEDIUM…arkitdown/src/markitdown/converters/_pptx_converter.py235def _convert_chart_to_markdown(self, chart):CODE
LOW…own/src/markitdown/converter_utils/docx/pre_process.py150 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…own-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py134 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py208 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py211 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py121 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py132 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py248 except Exception:CODE
MEDIUM…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py222def _convert_chart_to_markdown(self, chart):CODE
LOW…own-ocr/src/markitdown_ocr/_docx_converter_with_ocr.py152 except Exception:CODE
LOW…own-ocr/src/markitdown_ocr/_docx_converter_with_ocr.py155 except Exception:CODE
LOW…ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py78 except Exception:CODE
LOW…ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py107 except Exception as e:CODE
Deep Nesting30 hits · 30 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/tests/test_pdf_masterformat.py115CODE
LOWpackages/markitdown/src/markitdown/_exceptions.py58CODE
LOWpackages/markitdown/src/markitdown/__main__.py14CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py141CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py275CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py489CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py561CODE
LOWpackages/markitdown/src/markitdown/_markitdown.py696CODE
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.py127CODE
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…itdown/src/markitdown/converters/_youtube_converter.py70CODE
LOW…itdown/src/markitdown/converters/_youtube_converter.py211CODE
LOW…down/src/markitdown/converters/_bing_serp_converter.py57CODE
LOW…rkitdown/src/markitdown/converters/_ipynb_converter.py57CODE
LOW…arkitdown/src/markitdown/converters/_epub_converter.py53CODE
LOW…arkitdown/src/markitdown/converters/_pptx_converter.py61CODE
LOW…markitdown/src/markitdown/converters/_zip_converter.py87CODE
LOW…own/src/markitdown/converter_utils/docx/pre_process.py118CODE
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
LOW…own-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py149CODE
LOW…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py54CODE
LOW…own-ocr/src/markitdown_ocr/_pptx_converter_with_ocr.py87CODE
LOW…own-ocr/src/markitdown_ocr/_docx_converter_with_ocr.py126CODE
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
MEDIUMpackages/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_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_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_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_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_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_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.py790 # There were no other guesses, so just add the base guessCOMMENT
Redundant / Tautological Comments17 hits · 26 pts
SeverityFileLineSnippetContext
LOW…-sample-plugin/src/markitdown_sample_plugin/_plugin.py63 # Read the file stream into an str using hte 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_masterformat.py56 # Check if line contains ONLY a partial numbering (with possible whitespace/pipes)COMMENT
LOWpackages/markitdown/tests/test_pdf_masterformat.py139 # Check if next non-empty line exists and wasn't mergedCOMMENT
LOWpackages/markitdown/src/markitdown/_markitdown.py392 # Check if we have a seekable stream. If not, load the entire stream into memory.COMMENT
LOWpackages/markitdown/src/markitdown/_markitdown.py614 # Check if the converter will accept the file, and if so, try to convert itCOMMENT
LOW…rkitdown/src/markitdown/converters/_audio_converter.py100 # 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.py44 # Read the file contentCOMMENT
LOW…down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py94 # Check if dimensions are validCOMMENT
LOW…own-ocr/src/markitdown_ocr/_xlsx_converter_with_ocr.py165 # Check if sheet has imagesCOMMENT
Self-Referential Comments5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMpackages/markitdown/tests/test_module_misc.py18# This file contains module tests that are not directly tested by the FileTestVectors.COMMENT
MEDIUMpackages/markitdown/tests/test_cli_misc.py5# This file contains CLI tests that are not directly tested by the FileTestVectors.COMMENT
MEDIUMpackages/markitdown/src/markitdown/_markitdown.py530 # Create an initial guess from all this informationCOMMENT
MEDIUMpackages/markitdown/src/markitdown/_markitdown.py569 # Create a copy of the page_converters list, sorted by priority.COMMENT
MEDIUM…own/src/markitdown/converter_utils/docx/pre_process.py85 # Create a new paragraph tagCOMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpackages/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
HIGHpackages/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
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippetContext
CRITICAL…arkitdown/src/markitdown/converters/_pptx_converter.py133 alt_text = shape._element._nvXxPr.cNvPr.attrib.get("descr", "")CODE
Modern AI Meta-Vocabulary4 hits · 11 pts
SeverityFileLineSnippetContext
MEDIUMpackages/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_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_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
Over-Commented Block7 hits · 7 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/__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 Boilerplate5 hits · 5 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-ocr/src/markitdown_ocr/__init__.py21__all__ = [CODE
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpackages/markitdown/src/markitdown/_markitdown.py710 "placeholder" + base_guess.extension, strict=FalseCODE