Python tool for converting files and office documents to Markdown.
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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 511 finding(s).
Are imports declared and package/API names verified? 56 finding(s).
Are wrappers, guards, and repeated structures necessary? 586 finding(s).
Which changes need focused human review? 727 finding(s).
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.
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.
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.
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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/markitdown/tests/test_youtube.py | 30 | def test_youtube_empty_extraction_preserves_html( | CODE |
| LOW | packages/markitdown/tests/test_youtube.py | 122 | def test_youtube_preserves_metadata_output( | CODE |
| LOW | packages/markitdown/tests/test_youtube.py | 141 | def test_youtube_preserves_library_transcript( | CODE |
| LOW | packages/markitdown/tests/test_youtube.py | 188 | def test_youtube_converter_extracts_supported_video_ids( | CODE |
| LOW | packages/markitdown/tests/test_youtube.py | 203 | def test_youtube_converter_accepts_supported_url_formats(url: str) -> None: | CODE |
| LOW | packages/markitdown/tests/test_youtube.py | 211 | def test_youtube_converter_missing_title_metadata() -> None: | CODE |
| LOW | packages/markitdown/tests/test_module_vectors.py | 72 | def test_convert_stream_with_hints(test_vector): | CODE |
| LOW | packages/markitdown/tests/test_module_vectors.py | 93 | def test_convert_stream_without_hints(test_vector): | CODE |
| LOW | packages/markitdown/tests/test_module_vectors.py | 163 | def test_convert_keep_data_uris(test_vector): | CODE |
| LOW | packages/markitdown/tests/test_module_vectors.py | 181 | def test_convert_stream_keep_data_uris(test_vector): | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 239 | def test_arrow_accents_are_consistent() -> None: | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 246 | def test_math_italic_latin_alphabet_is_complete() -> None: | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 253 | def test_math_italic_expression_is_fully_normalized() -> None: | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 277 | def test_run_without_text_child_does_not_crash(): | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 285 | def test_run_with_text_still_converts(): | CODE |
| LOW⚡ | packages/markitdown/tests/test_docx.py | 291 | def test_subscript_with_missing_text_run_does_not_crash(): | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 56 | def test_omml_unknown_function_fallback(): | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 70 | def test_omml_function_name_split_across_runs(): | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 86 | def test_omml_known_function_split_across_runs(): | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 141 | def test_accent_templates_are_formattable() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 164 | def test_caron_and_ring_accents() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 170 | def test_unmodified_accent_still_converts() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 316 | def test_docx_styles_with_redundant_default_namespace( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 381 | def test_valid_styles_are_returned_unchanged(styles_xml: bytes) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 385 | def test_missing_type_repair_preserves_namespaces(styles_xml: bytes) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 402 | def test_styles_without_ids_are_removed(styles_xml: bytes) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 413 | def test_style_strike_repair_preserves_namespaces( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 441 | def test_other_namespace_dstrike_is_unchanged(styles_xml: bytes) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 548 | def test_image_hook_does_not_change_public_conversion_signature() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 560 | def test_inherited_hook_receives_images_and_options_in_order( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 622 | def test_declining_hook_preserves_native_output( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 642 | def test_native_converter_does_not_add_image_processing( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 657 | def test_override_can_delegate_to_super() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 704 | def test_fragment_placement_precedes_shared_html_conversion( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 732 | def test_standalone_block_image_does_not_leave_empty_wrappers( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 744 | def test_block_image_keeps_its_table_cell( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 778 | def test_nested_run_formatting_is_preserved_around_blocks( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 793 | def test_hook_inherits_preprocessing_and_style_precedence() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 812 | def test_multiple_images_and_native_fallback_keep_their_own_positions() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 826 | def test_many_images_have_independent_replacements() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 837 | def test_returned_image_and_literal_text_use_normal_html_rendering() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 854 | def test_invalid_return_is_not_silent_native_fallback(result: Any) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 868 | def test_full_document_is_not_a_valid_fragment(fragment: str) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 874 | def test_hook_errors_propagate_and_close_the_image_stream(via_dispatcher: bool) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 900 | def test_dispatcher_can_fall_back_to_native_docx_after_hook_error() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 911 | def test_mammoth_does_not_swallow_hook_file_reference_errors() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 922 | def test_per_call_options_and_fragments_do_not_leak_between_conversions() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 933 | def test_unreferenced_media_does_not_invoke_the_hook() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 951 | def test_image_html_does_not_create_nested_links( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 980 | def test_declining_hook_preserves_a_real_document(keep_data_uris: bool) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 996 | def test_hook_reads_images_from_the_preprocessed_archive() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1021 | def test_missing_dependencies_fail_before_invoking_hook( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1123 | def test_docx_underlined_text_is_preserved(tmp_path) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1140 | def test_docx_underlined_whitespace_is_preserved( | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1155 | def test_docx_embedded_style_map_overrides_underline_default(tmp_path) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1168 | def test_docx_caller_style_map_overrides_embedded_style_map(tmp_path) -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1192 | def test_docx_zip_filename_casing_mismatch() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1258 | def test_docx_zip_filename_non_casing_mismatch_still_rejected() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1320 | def test_docx_malformed_equations() -> None: | CODE |
| LOW | packages/markitdown/tests/test_docx.py | 1457 | def test_convert_docx_with_style_missing_type(tmp_path): | CODE |
| 366 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/markitdown/tests/test_image.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_image.py | 211 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 117 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 309 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 535 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 537 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 614 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 616 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 715 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 717 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 742 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 744 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 784 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cu.py | 786 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 639 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cu.py | 641 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cli_misc.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown/tests/test_cli_misc.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cli_misc.py | 293 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown/tests/test_cli_misc.py | 295 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 50 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 52 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 335 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 337 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 436 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …/markitdown/src/markitdown/converters/_cu_converter.py | 438 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_docx_converter.py | 332 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 151 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_docx_converter.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_pptx_converter.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_pptx_converter.py | 67 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_pptx_converter.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/markitdown-ocr/tests/test_pptx_converter.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_pptx_converter.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/markitdown-ocr/tests/test_pptx_converter.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| 36 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/markitdown/src/markitdown/_markitdown.py | 94 | except UnicodeDecodeError: | CODE |
| HIGH | packages/markitdown/src/markitdown/_markitdown.py | 659 | except NotImplementedError: | CODE |
| HIGH | …wn/src/markitdown/converters/_outlook_msg_converter.py | 120 | except Exception as e: | CODE |
| HIGH | …wn/src/markitdown/converters/_outlook_msg_converter.py | 347 | except Exception: | CODE |
| HIGH | …wn/src/markitdown/converters/_outlook_msg_converter.py | 292 | except (UnicodeDecodeError, LookupError): | CODE |
| HIGH | …rkitdown/src/markitdown/converters/_audio_converter.py | 102 | except MissingDependencyException: | CODE |
| HIGH | …markitdown/src/markitdown/converters/_rss_converter.py | 123 | except BaseException as _: | CODE |
| HIGH | …down/src/markitdown/converters/_bing_serp_converter.py | 102 | except UnicodeDecodeError: | CODE |
| HIGH | …down/src/markitdown/converters/_bing_serp_converter.py | 104 | except binascii.Error: | CODE |
| HIGH | …arkitdown/src/markitdown/converters/_pptx_converter.py | 217 | except Exception: | CODE |
| HIGH | …arkitdown/src/markitdown/converters/_pptx_converter.py | 254 | except Exception: | CODE |
| HIGH | …arkitdown/src/markitdown/converters/_pptx_converter.py | 269 | except Exception: | CODE |
| HIGH | …arkitdown/src/markitdown/converters/_pptx_converter.py | 278 | except Exception: | CODE |
| HIGH | …arkitdown/src/markitdown/converters/_pptx_converter.py | 193 | except Exception: | CODE |
| HIGH | …markitdown/src/markitdown/converters/_zip_converter.py | 125 | except UnsupportedFormatException: | CODE |
| HIGH | …markitdown/src/markitdown/converters/_zip_converter.py | 127 | except FileConversionException: | CODE |
| HIGH | …own/src/markitdown/converter_utils/docx/pre_process.py | 286 | except Exception: | CODE |
| HIGH | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 123 | except Exception: | CODE |
| HIGH | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 332 | except Exception: | CODE |
| HIGH | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 83 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …sample-plugin/src/markitdown_sample_plugin/__init__.py | 5 | CODE | |
| LOW | …sample-plugin/src/markitdown_sample_plugin/__init__.py | 5 | CODE | |
| LOW | …sample-plugin/src/markitdown_sample_plugin/__init__.py | 5 | CODE | |
| LOW | …sample-plugin/src/markitdown_sample_plugin/__init__.py | 6 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 5 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 6 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 6 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 6 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 11 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 11 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 12 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 13 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 13 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 13 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 13 | CODE | |
| LOW | packages/markitdown/src/markitdown/__init__.py | 13 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_xlsx_converter.py | 17 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_xlsx_converter.py | 24 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 5 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 6 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 7 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 8 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 9 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 10 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 11 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 12 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 13 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 14 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 14 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 15 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 16 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 17 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 18 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 19 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 20 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 20 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 24 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 24 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 28 | CODE | |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 29 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_docx_converter.py | 2 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_docx_converter.py | 3 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_zip_converter.py | 13 | CODE | |
| LOW | …src/markitdown/converter_utils/docx/math/latex_dict.py | 8 | CODE | |
| LOW | packages/markitdown-mcp/src/markitdown_mcp/__init__.py | 5 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 10 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 10 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 11 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 12 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 12 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 16 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 17 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 18 | CODE | |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 19 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 126 | except Exception: | CODE |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 315 | except Exception: | CODE |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 671 | except Exception: | CODE |
| LOW | …rkitdown/src/markitdown/converters/_image_converter.py | 112 | except Exception as e: | CODE |
| LOW | …s/markitdown/src/markitdown/converters/_llm_caption.py | 24 | except Exception as e: | CODE |
| LOW | …wn/src/markitdown/converters/_outlook_msg_converter.py | 120 | except Exception as e: | CODE |
| LOW | …wn/src/markitdown/converters/_outlook_msg_converter.py | 214 | except Exception: | CODE |
| LOW | …wn/src/markitdown/converters/_outlook_msg_converter.py | 278 | except Exception: | CODE |
| LOW | …wn/src/markitdown/converters/_outlook_msg_converter.py | 347 | except Exception: | CODE |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 576 | except Exception: | CODE |
| LOW | …/markitdown/src/markitdown/converters/_cu_converter.py | 421 | except Exception as exc: | CODE |
| LOW | …itdown/src/markitdown/converters/_youtube_converter.py | 134 | except Exception as e: | CODE |
| MEDIUM | …itdown/src/markitdown/converters/_youtube_converter.py | 135 | print(f"Error extracting description: {e}") | CODE |
| LOW | …itdown/src/markitdown/converters/_youtube_converter.py | 193 | except Exception as e: | CODE |
| MEDIUM | …itdown/src/markitdown/converters/_youtube_converter.py | 196 | print(f"Error fetching transcript: {e}") | CODE |
| LOW | …itdown/src/markitdown/converters/_youtube_converter.py | 250 | except Exception as e: | CODE |
| LOW | …rkitdown/src/markitdown/converters/_ipynb_converter.py | 100 | except Exception as e: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 193 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 217 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 254 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 269 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 278 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 294 | except Exception: | CODE |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 362 | except Exception: | CODE |
| MEDIUM | …arkitdown/src/markitdown/converters/_pptx_converter.py | 325 | def _convert_chart_to_markdown(self, chart): | CODE |
| LOW | …own/src/markitdown/converter_utils/docx/pre_process.py | 286 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 83 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 120 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 123 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 297 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 302 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 332 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 380 | except Exception as e: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 386 | except Exception: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 413 | except Exception as e: | CODE |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 419 | except Exception: | CODE |
| LOW | …ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py | 79 | except Exception: | CODE |
| LOW | …ages/markitdown-ocr/src/markitdown_ocr/_ocr_service.py | 108 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/markitdown/tests/test_docx.py | 316 | CODE | |
| LOW | packages/markitdown/tests/test_docx.py | 1457 | CODE | |
| LOW | packages/markitdown/tests/test_xlsx.py | 344 | CODE | |
| LOW | packages/markitdown/tests/test_xlsx.py | 473 | CODE | |
| LOW | …down/tests/test_files/generate_pdf_cleanup_fixtures.py | 15 | CODE | |
| LOW | packages/markitdown/src/markitdown/_exceptions.py | 58 | CODE | |
| LOW | packages/markitdown/src/markitdown/__main__.py | 16 | CODE | |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 188 | CODE | |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 322 | CODE | |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 529 | CODE | |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 602 | CODE | |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 737 | CODE | |
| LOW | …down/src/markitdown/converters/_doc_intel_converter.py | 71 | CODE | |
| LOW | …down/src/markitdown/converters/_doc_intel_converter.py | 104 | CODE | |
| LOW | …wn/src/markitdown/converters/_outlook_msg_converter.py | 327 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_xlsx_converter.py | 74 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_xlsx_converter.py | 123 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 120 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 398 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 520 | CODE | |
| LOW | …/markitdown/src/markitdown/converters/_cu_converter.py | 251 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_rss_converter.py | 442 | CODE | |
| LOW | …itdown/src/markitdown/converters/_youtube_converter.py | 89 | CODE | |
| LOW | …itdown/src/markitdown/converters/_youtube_converter.py | 229 | CODE | |
| LOW | …down/src/markitdown/converters/_bing_serp_converter.py | 57 | CODE | |
| LOW | …rkitdown/src/markitdown/converters/_ipynb_converter.py | 64 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_epub_converter.py | 55 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 61 | CODE | |
| LOW | …arkitdown/src/markitdown/converters/_pptx_converter.py | 92 | CODE | |
| LOW | …markitdown/src/markitdown/converters/_zip_converter.py | 87 | CODE | |
| LOW | …kitdown/src/markitdown/converter_utils/_xlsx_images.py | 45 | CODE | |
| LOW | …kitdown/src/markitdown/converter_utils/docx/_images.py | 85 | CODE | |
| LOW | …own/src/markitdown/converter_utils/docx/pre_process.py | 250 | CODE | |
| LOW | packages/markitdown-ocr/tests/test_docx_converter.py | 186 | CODE | |
| LOW | packages/markitdown-ocr/tests/test_xlsx_inheritance.py | 255 | CODE | |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 28 | CODE | |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 158 | CODE | |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 340 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ckages/markitdown/tests/test_files/test_wikipedia.html | 936 | </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.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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_serp.html | 17 | var logJSText=function(n,t){t===void 0&&(t=null);(new Image).src=_G.lsUrl+'&Type=Event.ClientInst&DATA=[{"T":"CI.ClientI | CODE |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 831 | # There were no other guesses, so just add the base guess | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …-sample-plugin/src/markitdown_sample_plugin/_plugin.py | 63 | # Read the file stream into a str using the provided charset encoding, or using the system default | COMMENT |
| LOW | …-sample-plugin/src/markitdown_sample_plugin/_plugin.py | 67 | # Return the result | COMMENT |
| LOW | packages/markitdown/tests/test_pdf.py | 1092 | # Check if line contains ONLY a partial numbering (with possible whitespace/pipes) | COMMENT |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 435 | # Check if we have a seekable stream. If not, load the entire stream into memory. | COMMENT |
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 655 | # Check if the converter will accept the file, and if so, try to convert it | COMMENT |
| LOW | …rkitdown/src/markitdown/converters/_audio_converter.py | 105 | # Return the result | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 37 | # Check if this line is ONLY a partial numbering | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 296 | # Check if enough rows are table rows (at least 20%) | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 328 | # Check if this row starts a table region | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 383 | # Check if we're inside a table region (not at start) | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 448 | # Assign words to columns | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 477 | # Check if cells contain short, structured data (not long text) | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_pdf_converter.py | 539 | # Read file stream into BytesIO for compatibility with pdfplumber | COMMENT |
| LOW | …markitdown/src/markitdown/converters/_csv_converter.py | 86 | # Read the file content | COMMENT |
| LOW | …down-ocr/src/markitdown_ocr/_pdf_converter_with_ocr.py | 94 | # Check if dimensions are valid | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | packages/markitdown/tests/test_files/test_rss.xml | 1 | <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.xml | 1 | <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 |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/markitdown/src/markitdown/_base_converter.py | 51 | Return a quick determination on if the converter should attempt converting the document. This is primar | STRING |
| HIGH | packages/markitdown/src/markitdown/_base_converter.py | 90 | Convert a document to Markdown text. Parameters: - file_stream: The file-like object to conver | STRING |
| HIGH | …/markitdown/src/markitdown/converters/_cu_converter.py | 397 | Resolve analyzer modality from cache or via get_analyzer() fallback. For known prebuilt-* names, returns the modali | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/markitdown/tests/test_cli_misc.py | 19 | # This file contains CLI tests that are not directly tested by the FileTestVectors. | COMMENT |
| MEDIUM | packages/markitdown/src/markitdown/_markitdown.py | 571 | # Create an initial guess from all this information | COMMENT |
| MEDIUM | packages/markitdown/src/markitdown/_markitdown.py | 610 | # Create a copy of the page_converters list, sorted by priority. | COMMENT |
| MEDIUM | …own/src/markitdown/converter_utils/docx/pre_process.py | 88 | # Create a new paragraph tag | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/markitdown/tests/test_files/test_rss.xml | 1 | <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.xml | 1 | <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.xml | 1 | <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_blog.html | 20 | <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …arkitdown/src/markitdown/converters/_pptx_converter.py | 216 | alt_text = shape._element._nvXxPr.cNvPr.attrib.get("descr", "") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .devcontainer/devcontainer.json | 21 | // Use 'forwardPorts' to make a list of ports inside the container available locally. | COMMENT |
| LOW | packages/markitdown-sample-plugin/tests/__init__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| LOW | …ample-plugin/src/markitdown_sample_plugin/__about__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| LOW | packages/markitdown/tests/test_docx.py | 101 | COMMENT | |
| LOW | packages/markitdown/tests/test_docx.py | 181 | # ``CHR`` maps a combining accent to a LaTeX template. U+20EE COMBINING LEFT | COMMENT |
| LOW | packages/markitdown/tests/__init__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| LOW | packages/markitdown/src/markitdown/__about__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| LOW | packages/markitdown-mcp/tests/__init__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| LOW | packages/markitdown-mcp/src/markitdown_mcp/__about__.py | 1 | # SPDX-FileCopyrightText: 2024-present Adam Fourney <adamfo@microsoft.com> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …sample-plugin/src/markitdown_sample_plugin/__init__.py | 8 | __all__ = [ | CODE |
| LOW | packages/markitdown/src/markitdown/__init__.py | 21 | __all__ = [ | CODE |
| LOW | …kages/markitdown/src/markitdown/converters/__init__.py | 31 | __all__ = [ | CODE |
| LOW | packages/markitdown-mcp/src/markitdown_mcp/__init__.py | 7 | __all__ = [ | CODE |
| LOW | packages/markitdown-mcp/src/markitdown_mcp/__main__.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | packages/markitdown-ocr/src/markitdown_ocr/__init__.py | 21 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/markitdown/src/markitdown/_markitdown.py | 751 | "placeholder" + base_guess.extension, strict=False | CODE |