diff --git a/.pylintrc-local.yml b/.pylintrc-local.yml
index f5a171e9651e39bf475b13df5f03f10667cfec0f..ae0f920322008c64301a75b11d42457c2ece9006 100644
--- a/.pylintrc-local.yml
+++ b/.pylintrc-local.yml
@@ -1,6 +1,5 @@
 - arg: ignored-modules
   val:
-  - asciidag
   - matplotlib
   - ipykernel
   - ply
diff --git a/examples/visualization.py b/examples/visualization.py
index 2b569a3925f464f097943c603eafc30ad863d0c8..ac71e6060b60adcf480e1864018ff1a57fa5d8b8 100755
--- a/examples/visualization.py
+++ b/examples/visualization.py
@@ -22,8 +22,6 @@ def main():
     stack = pt.stack([array, 2*array, array + 6])
     result = stack @ stack.T
 
-    pt.show_ascii_graph(result)
-
     dot_code = pt.get_dot_graph(result)
 
     with open(GRAPH_DOT, "w") as outf:
diff --git a/pytato/__init__.py b/pytato/__init__.py
index 0509a8c9f962eae2fd7312bf2135ae7bf84bc339..572e4a7abb52f728ab4083ee461d9b4be29248e4 100644
--- a/pytato/__init__.py
+++ b/pytato/__init__.py
@@ -89,7 +89,6 @@ from pytato.target import Target
 from pytato.target.loopy import LoopyPyOpenCLTarget
 from pytato.target.python.jax import generate_jax
 from pytato.visualization import (get_dot_graph, show_dot_graph,
-                                  get_ascii_graph, show_ascii_graph,
                                   get_dot_graph_from_partition,
                                   show_fancy_placeholder_data_flow,
                                   )
@@ -136,8 +135,8 @@ __all__ = (
 
         "Target", "LoopyPyOpenCLTarget",
 
-        "get_dot_graph", "show_dot_graph", "get_ascii_graph",
-        "show_ascii_graph", "get_dot_graph_from_partition",
+        "get_dot_graph", "show_dot_graph",
+        "get_dot_graph_from_partition",
         "show_fancy_placeholder_data_flow",
 
         "abs", "sin", "cos", "tan", "arcsin", "arccos", "arctan", "sinh", "cosh",
diff --git a/pytato/visualization/__init__.py b/pytato/visualization/__init__.py
index 6fed19fec9236275008b20decb591b0752659a45..e0138a78c290255a40dc8979a982c929df703a0b 100644
--- a/pytato/visualization/__init__.py
+++ b/pytato/visualization/__init__.py
@@ -2,19 +2,15 @@
 .. currentmodule:: pytato
 
 .. automodule:: pytato.visualization.dot
-.. automodule:: pytato.visualization.ascii
 .. automodule:: pytato.visualization.fancy_placeholder_data_flow
 """
 
 from .dot import get_dot_graph, show_dot_graph, get_dot_graph_from_partition
-from .ascii import get_ascii_graph, show_ascii_graph
 from .fancy_placeholder_data_flow import show_fancy_placeholder_data_flow
 
 
 __all__ = [
     "get_dot_graph", "show_dot_graph", "get_dot_graph_from_partition",
 
-    "get_ascii_graph", "show_ascii_graph",
-
     "show_fancy_placeholder_data_flow",
 ]
diff --git a/pytato/visualization/ascii.py b/pytato/visualization/ascii.py
deleted file mode 100644
index e417a9bfc01e0a53e950455554596ce2e32d446f..0000000000000000000000000000000000000000
--- a/pytato/visualization/ascii.py
+++ /dev/null
@@ -1,124 +0,0 @@
-"""
-.. currentmodule:: pytato
-
-.. autofunction:: get_ascii_graph
-.. autofunction:: show_ascii_graph
-"""
-__copyright__ = """
-Copyright (C) 2021 University of Illinois Board of Trustees
-"""
-
-__license__ = """
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-"""
-
-from typing import Union, List, Dict
-from pytato.transform import ArrayOrNames
-from pytato.array import Array, DictOfNamedArrays, InputArgumentBase
-from pytato.visualization.dot import ArrayToDotNodeInfoMapper
-from pytato.codegen import normalize_outputs
-from pytools import UniqueNameGenerator
-
-
-# {{{ Show ASCII representation of DAG
-
-def get_ascii_graph(result: Union[Array, DictOfNamedArrays],
-                    use_color: bool = True) -> str:
-    """Return a string representing the computation of *result*
-    using the `asciidag <https://pypi.org/project/asciidag/>`_ package.
-
-    :arg result: Outputs of the computation (cf.
-        :func:`pytato.generate_loopy`).
-    :arg use_color: Colorized output
-    """
-    outputs: DictOfNamedArrays = normalize_outputs(result)
-    del result
-
-    mapper = ArrayToDotNodeInfoMapper()
-    for elem in outputs._data.values():
-        mapper(elem)
-
-    nodes = mapper.nodes
-
-    input_arrays: List[Array] = []
-    internal_arrays: List[ArrayOrNames] = []
-    array_to_id: Dict[ArrayOrNames, str] = {}
-
-    id_gen = UniqueNameGenerator()
-    for array in nodes:
-        array_to_id[array] = id_gen("array")
-        if isinstance(array, InputArgumentBase):
-            input_arrays.append(array)
-        else:
-            internal_arrays.append(array)
-
-    # Since 'asciidag' prints the DAG from top to bottom (ie, with the inputs
-    # at the bottom), we need to invert our representation of it, that is, the
-    # 'parents' constructor argument to Node() actually means 'children'.
-    from asciidag.node import Node  # type: ignore[import]
-    asciidag_nodes: Dict[ArrayOrNames, Node] = {}
-
-    from collections import defaultdict
-    asciidag_edges: Dict[ArrayOrNames, List[ArrayOrNames]] = defaultdict(list)
-
-    # Reverse edge directions
-    for array in internal_arrays:
-        for _, v in nodes[array].edges.items():
-            asciidag_edges[v].append(array)
-
-    # Add the internal arrays in reversed order
-    for array in internal_arrays[::-1]:
-        ary_edges = [asciidag_nodes[v] for v in asciidag_edges[array]]
-
-        if array == internal_arrays[-1]:
-            ary_edges.append(Node("Outputs"))
-
-        asciidag_nodes[array] = Node(f"{nodes[array].title}",
-                              parents=ary_edges)
-
-    # Add the input arrays last since they have no predecessors
-    for array in input_arrays:
-        ary_edges = [asciidag_nodes[v] for v in asciidag_edges[array]]
-        asciidag_nodes[array] = Node(f"{nodes[array].title}", parents=ary_edges)
-
-    input_node = Node("Inputs", parents=[asciidag_nodes[v] for v in input_arrays])
-
-    from asciidag.graph import Graph  # type: ignore[import]
-    from io import StringIO
-
-    f = StringIO()
-    graph = Graph(fh=f, use_color=use_color)
-
-    graph.show_nodes([input_node])
-
-    # Get the graph and remove trailing whitespace
-    res = "\n".join([s.rstrip() for s in f.getvalue().split("\n")])
-
-    return res
-
-
-def show_ascii_graph(result: Union[Array, DictOfNamedArrays]) -> None:
-    """Print a graph representing the computation of *result* to stdout using the
-    `asciidag <https://pypi.org/project/asciidag/>`_ package.
-
-    :arg result: Outputs of the computation (cf.
-        :func:`pytato.generate_loopy`) or the output of :func:`get_dot_graph`.
-    """
-
-    print(get_ascii_graph(result, use_color=True))
diff --git a/requirements.txt b/requirements.txt
index 7e69f17f947b4902ea5dee75ee9e3978b1cd49bd..4f9b14d65f06339fb2561926adc4d95dd1b6c05a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,5 +3,4 @@ git+https://github.com/inducer/pymbolic.git#egg=pymbolic
 git+https://github.com/inducer/genpy.git#egg=genpy
 git+https://github.com/inducer/loopy.git#egg=loopy
 
-asciidag
 mako
diff --git a/test/test_pytato.py b/test/test_pytato.py
index 5d2343ee9543f68c6cd58ac206b00d83ee6e2041..5b35bdde7d9d374c3863116c26ff023dfb336de2 100644
--- a/test/test_pytato.py
+++ b/test/test_pytato.py
@@ -371,37 +371,6 @@ def test_userscollector():
         assert nuc[dag] == 0
 
 
-def test_asciidag():
-    pytest.importorskip("asciidag")
-
-    n = pt.make_size_param("n")
-    array = pt.make_placeholder(name="array", shape=n, dtype=np.float64)
-    stack = pt.stack([array, 2*array, array + 6])
-    y = stack @ stack.T
-
-    from pytato import get_ascii_graph
-
-    res = get_ascii_graph(y, use_color=False)
-
-    ref_str = r"""* Inputs
-*-.   Placeholder
-|\ \
-* | | IndexLambda
-| |/
-|/|
-| * IndexLambda
-|/
-*   Stack
-|\
-* | AxisPermutation
-|/
-* Einsum
-* Outputs
-"""
-
-    assert res == ref_str
-
-
 def test_linear_complexity_inequality():
     # See https://github.com/inducer/pytato/issues/163
     import pytato as pt