diff --git a/README.md b/README.md
index cada007..ec67866 100644
--- a/README.md
+++ b/README.md
@@ -181,6 +181,7 @@ Availability:
 - `--py3-plus` is passed on the commandline.
 
 ```python
+str()       # "''"
 str("foo")  # "foo"
 ```
 
diff --git a/pyupgrade.py b/pyupgrade.py
index a51cb50..9bbe886 100644
--- a/pyupgrade.py
+++ b/pyupgrade.py
@@ -1271,10 +1271,15 @@ class FindPy3Plus(ast.NodeVisitor):
         elif (
                 isinstance(node.func, ast.Name) and
                 node.func.id == 'str' and
-                len(node.args) == 1 and
-                isinstance(node.args[0], ast.Str) and
                 not node.keywords and
-                not _starargs(node)
+                not _starargs(node) and
+                (
+                    len(node.args) == 0 or
+                    (
+                        len(node.args) == 1 and
+                        isinstance(node.args[0], ast.Str)
+                    )
+                )
         ):
             self.native_literals.add(_ast_to_offset(node))
         elif (
@@ -1788,7 +1793,10 @@ def _fix_py3_plus(contents_text):  # type: (str) -> str
             func_args, end = _parse_call_args(tokens, j)
             if any(tok.name == 'NL' for tok in tokens[i:end]):
                 continue
-            _replace_call(tokens, i, end, func_args, '{args[0]}')
+            if func_args:
+                _replace_call(tokens, i, end, func_args, '{args[0]}')
+            else:
+                tokens[i:end] = [token._replace(name='STRING', src="''")]
         elif token.offset in visitor.simple_ids:
             tokens[i] = Token(
                 token.name,

`str()` native literal should be just `''`
https://github.com/asottile/pyupgrade#forced-strnative-literals

```python
str()  # ''
```
diff --git a/tests/native_literals_test.py b/tests/native_literals_test.py
index a894e2d..a82820a 100644
--- a/tests/native_literals_test.py
+++ b/tests/native_literals_test.py
@@ -24,6 +24,7 @@ def test_fix_native_literals_noop(s):
 @pytest.mark.parametrize(
     ('s', 'expected'),
     (
+        ('str()', "''"),
         ('str("foo")', '"foo"'),
         ('str("""\nfoo""")', '"""\nfoo"""'),
     ),

pip install -e .[dev]
parse_log_pytest
requirements.txt
3.9
requirements-dev.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
cfgv==3.4.0
coverage==7.8.0
distlib==0.3.9
exceptiongroup==1.2.2
filelock==3.18.0
flake8==7.2.0
identify==2.6.9
iniconfig==2.1.0
mccabe==0.7.0
mock==5.2.0
nodeenv==1.9.1
packaging==24.2
platformdirs==4.3.7
pluggy==1.5.0
pre_commit==4.2.0
pycodestyle==2.13.0
pyflakes==3.3.2
pytest==8.3.5
-e git+https://github.com/asottile/pyupgrade.git@730dd770961576213ea06bcd8164b91196f1e903#egg=pyupgrade
PyYAML==6.0.2
tokenize_rt==6.1.0
tomli==2.2.1
virtualenv==20.29.3

name: pyupgrade
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - cfgv==3.4.0
      - coverage==7.8.0
      - distlib==0.3.9
      - exceptiongroup==1.2.2
      - filelock==3.18.0
      - flake8==7.2.0
      - identify==2.6.9
      - iniconfig==2.1.0
      - mccabe==0.7.0
      - mock==5.2.0
      - nodeenv==1.9.1
      - packaging==24.2
      - platformdirs==4.3.7
      - pluggy==1.5.0
      - pre-commit==4.2.0
      - pycodestyle==2.13.0
      - pyflakes==3.3.2
      - pytest==8.3.5
      - pyyaml==6.0.2
      - tokenize-rt==6.1.0
      - tomli==2.2.1
      - virtualenv==20.29.3
prefix: /opt/conda/envs/pyupgrade

tests/native_literals_test.py::test_fix_native_literals[str()-'']
tests/native_literals_test.py::test_fix_native_literals_noop[str(1)] tests/native_literals_test.py::test_fix_native_literals_noop[str("foo"\n"bar")] tests/native_literals_test.py::test_fix_native_literals_noop[str(*a)] tests/native_literals_test.py::test_fix_native_literals_noop[str("foo", tests/native_literals_test.py::test_fix_native_literals_noop[str(**k)] tests/native_literals_test.py::test_fix_native_literals[str("foo")-"foo"] tests/native_literals_test.py::test_fix_native_literals[str("""\nfoo""")-"""\nfoo"""]
README.md pyupgrade.py
README.md pyupgrade.py